考虑下面的数据库结构 -儿童与风扇变出
tasks
task1
title: "My first task"
uid: "user1"
user-tasks
user1
task1: true
观察更改为特定用户的任务,你可能会实现这样的事情 -
ref.child("user-tasks").child(uid).observe(.childChanged...
但问题标题的任何更改都不会反映在用户任务中,因此childChanged事件不会触发。如果你观察到所有的任务,那么对其他用户任务的任何改变都会导致观察者不必要地执行任务。此外,所需的实现将处理其他用户/设备对任务的更新,并且更新会正确触发。
到目前为止,我唯一的想法是用时间戳取代真正的时间戳,并在触发观察者时触发观察者。有没有更好的办法?
'task1:true'代表什么? – 3stud1ant3
是的,我也使用了时间戳方法,并且本地缓存了最后一个同步时间戳(在核心数据中)。后续时间我查询的条目大于上次同步时间戳(来自核心数据)。 – user1046037
@ 3stud1ant3是“查找”表或索引列表,表示用户拥有的每个任务。通过这种方式,该节点包含用户拥有的任务的每个密钥。 – cutiko