2 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超5個贊
我的做法有所不同。
解決方案1:push()POJO中的方法
因?yàn)槲也幌胗闷婀值奈鼩鈩┗驅(qū)傩耘獊y我的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)
}
}
然后,我可以簡單地創(chuàng)建POJO的實(shí)例并對其進(jìn)行調(diào)用push(),以正確填充創(chuàng)建時間屬性。
這無疑使POJO變得簡單一些,并包含了POJO不應(yīng)該知道的邏輯。但是,使用此處@Exclude某些響應(yīng)中概述的注釋和/或強(qiáng)制轉(zhuǎn)換也需要了解存儲機(jī)制。
解決方案2:助手或DatabaseReference擴(kuò)展程序(Kotlin)
為了克服這個問題,您當(dāng)然也可以pushTask(task: Task)在助手中創(chuàng)建一個方法,或者-如果使用Kotlin-一個擴(kuò)展方法,例如DatabaseReference,看起來像這樣:
fun DatabaseReference.push(pojo: Pojo) {
push()
.apply {
setValue(pojo)
child(Pojo.CREATED_AT_KEY).setValue(ServerValue.TIMESTAMP)
}
}
現(xiàn)在來看它,我開始覺得我實(shí)際上更喜歡第二種方法(如果我可以使用Kotlin-我不喜歡幫助者)。但這可能只是口味問題。;)
- 2 回答
- 0 關(guān)注
- 550 瀏覽
添加回答
舉報