javascript - Firebase 计算父级的 num 个子级

标签 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 });
});

有什么帮助让这个工作吗?

谢谢你。

最佳答案

调用 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 存储库中,它完全符合您的要求:保留 child 数量的计数器。该示例使用更有效的方法来保持计数。

关于javascript - Firebase 计算父级的 num 个子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44760645/

相关文章:

javascript - React 上下文值未在 ComponentDidMount 中定义

firebase - Google Cloud Functions - 警告避免嵌套 promise promise /无嵌套

javascript - 即使该路径上有数据,Firebase 事务也会在路径上读取 null

swift - FirebaseobserveSingleEvent 崩溃应用程序?出现错误 "URL scheme must be one of gs://, http://, or https://"

javascript - 模拟在 Windows 中打开粘滞键

javascript - 我的第一个 IF 不工作,但我的 else if 和 else 部分工作 javascript

javascript - 如何检查电子邮件地址是否已在 firebase auth 上注册,就像 firebaseui 那样?

android - 如何在 Firebase 中已保存的数据之上保存数据?

swift - 带有 Firebase 的 iOS 应用程序不会以缓慢的互联网连接启动

javascript - 生成 3 个非重复值