Firebase计数父亲的子数

dis*_*gra 2 javascript firebase firebase-realtime-database google-cloud-functions

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

'user': {
    '-Yuna99s993m': { count: 1},
    '-Yada99s993m': { count: 2},
}
Run Code Online (Sandbox Code Playgroud)

我正在创建一个云函数巫婆每次输入一个新节点时,它应该添加等于用户节点的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 });
});
Run Code Online (Sandbox Code Playgroud)

有什么帮助让这个工作?

谢谢.

Fra*_*len 7

调用event.data.ref.parent.numChildren()不起作用,因为定义parentDatabaseReference一段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 });
    });
})
Run Code Online (Sandbox Code Playgroud)

函数child-count示例中还有一个示例 Github repo,它可以完全满足您的需求:保持子项数的计数器.该示例使用更有效的方法来保持计数.