2 回答
TA贡献1806条经验 获得超5个赞
我的做法有所不同。
解决方案1:push()POJO中的方法
因为我不想用奇怪的吸气剂或属性弄乱我的POJO,所以我只是push()在POJO中定义一个如下所示的方法:
/**
* Pushes a new instance to the DB.
*
* @param parentNode `DatabaseReference` to the parent node this object shall be attached to
*/
fun push(parentNode: DatabaseReference) {
parentNode
.push()
.apply {
setValue(this@Pojo)
child(Pojo.CREATED_AT_KEY).setValue(ServerValue.TIMESTAMP)
}
}
然后,我可以简单地创建POJO的实例并对其进行调用push(),以正确填充创建时间属性。
这无疑使POJO变得简单一些,并包含了POJO不应该知道的逻辑。但是,使用此处@Exclude某些响应中概述的注释和/或强制转换也需要了解存储机制。
解决方案2:助手或DatabaseReference扩展程序(Kotlin)
为了克服这个问题,您当然也可以pushTask(task: Task)在助手中创建一个方法,或者-如果使用Kotlin-一个扩展方法,例如DatabaseReference,看起来像这样:
fun DatabaseReference.push(pojo: Pojo) {
push()
.apply {
setValue(pojo)
child(Pojo.CREATED_AT_KEY).setValue(ServerValue.TIMESTAMP)
}
}
现在来看它,我开始觉得我实际上更喜欢第二种方法(如果我可以使用Kotlin-我不喜欢帮助者)。但这可能只是口味问题。;)
- 2 回答
- 0 关注
- 524 浏览
添加回答
举报