我在firebase中有这样的数据结构
KUI blab blab \cite{bla} \cite[prout]{bla} \footcite[prout][hein]{ bla } KUI aBla
我希望只要其值发生变化,就会在javascript中为任何给定的帖子(例如post1)重新获取posts: {
post1-uid: {
likedCount: 10
... other properties ...
}
post2-uid: {
likedCount: 2
... other properties ...
}
}
。
我尝试使用
likedCount
但是var likedCount;
post1Ref.on("child_change", snapshot => {
likedCount = snapshopt.val();
});
中的other properties
更新后,也会触发侦听器。我需要添加post1
条件吗?看来我走错了路......
实现目标的优雅方式是什么?
答案 0 :(得分:2)
如果您想要一个非常小的数据上的监听器,那么只需构建不同的数据并将您的引用指向likesCount的新父级。
posts: {
post1-uid: {
metrics: {
likedCount: 10
},
... other properties ...
}
}
答案 1 :(得分:1)
当您附加侦听器的直接子节点发生更改(或添加或删除)时,会触发child_
个事件。您无法针对特定属性触发它们。
如果您只想在likedCount
更改时触发,则可以对数据进行建模,以便单独列出喜欢的计数:
likedCounts
post1-uid1: 10
post1-uid2: 2
现在,您可以将监听器附加到likedCounts
,只需了解该值的更改:
ref.child("likedCounts").on("child_change", snapshot => {
let postKey = snapshot.key;
let likedCount = snapshot.val();
});