如何从firebase中保存的对象获取最新的likesCount整数值?

时间:2017-09-05 20:52:27

标签: javascript firebase firebase-realtime-database

我在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条件吗?看来我走错了路...... 实现目标的优雅方式是什么?

2 个答案:

答案 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();
});