我正在尝试获取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 });
});
有什么帮助才能让它发挥作用?
谢谢。
答案 0 :(得分:7)
致电event.data.ref.parent.numChildren()
无法发挥作用,因为parent
是DatabaseReference
而numChildren()
是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,它可以完全按照您的要求进行操作:保持子项数的计数器。该示例使用更有效的方法来保持计数。