Firebase计数父亲的子数

时间:2017-06-26 13:15:18

标签: javascript firebase firebase-realtime-database google-cloud-functions

我正在尝试获取js firebase中父节点的子节点数。 我想要:

'user': {
    '-Yuna99s993m': { count: 1},
    '-Yada99s993m': { count: 2},
}

我正在创建一个云函数,每次输入一个新节点时,它应该添加等于用户节点的numChildren的计数。

exports.setCount = functions.database.ref('/user/{userId}').onWrite(event => {
    // This doesn't work
    const count = event.data.ref.parent.numChildren();
    return event.data.ref.update({ count });
});

有什么帮助才能让它发挥作用?

谢谢。

1 个答案:

答案 0 :(得分:7)

致电event.data.ref.parent.numChildren()无法发挥作用,因为parentDatabaseReferencenumChildren()DataSnapshot定义的(您可以通过附加听众参考):

exports.setCount = functions.database.ref('/user/{userId}').onWrite(event => {
    return event.data.ref.parent.once("value", (snapshot) => {
      const count = snapshot.numChildren();
      return event.data.ref.update({ count });
    });
})

函数示例中还有一个child-count example Github repo,它可以完全按照您的要求进行操作:保持子项数的计数器。该示例使用更有效的方法来保持计数。