javascript - Firebase 的云功能 : How do I trigger a database function for a specific child key of all children

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

假设我的数据库如下所示:

project
└── users
    ├── safuhf8sdf76fs
    │   ├── name: 'William'
    │   └── favoriteColor: 'blue'
    ├── sffuef5srf72fd
    │   ├── name: 'Emily'
    │   └── favoriteColor: 'yellow'
    └── rfdu4ffsgf42gi
        ├── name: 'Sam'
        └── favoriteColor: 'red'

我正在尝试创建一个 Cloud Function,它会在任何 user 对象的 favoriteColor 值更改/添加/删除时触发。

我遇到问题的部分是创建对所述 key 的引用。

我知道我可以听取用户的任何和所有更改

exports.updatedFavoriteColor = functions.database.ref('/users').onWrite(event => { ... });

然后检查更改的数据是否为 ​​favoriteColor

虽然这可行,但我更喜欢一个专门监听所有用户对象的favoriteColor键的触发器——类似这样的东西:functions.database.ref('/users').child(?).child('favoriteColor')

例如,当 William 或 Emily 的 favoriteColor 发生变化时,我的首选函数将被调用,但当 Sam 的 name 发生变化时则不会。这可能吗?

最佳答案

我想我通过更多的挖掘找到了答案。

Firebase docs建议我可以执行以下操作:

exports.updatedFavoriteColor = functions.database.ref('/users/{pushId}/favoriteColor').onWrite(event => { ... });

这应该由任何用户的 favoriteColor 更改触发,其中正在更新的特定用户由引用中的 {pushId} 表示。在函数本身中,您可以使用 event.params.pushId

引用用户 ID

关于javascript - Firebase 的云功能 : How do I trigger a database function for a specific child key of all children,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46518425/

相关文章:

firebase - 如何用flutter顺序排列Cloud Firestore文档?

Angular2 Firebase 设置用户自定义属性

java - onLocationChange() 未被调用...使用 FuseLocationApi ...检查了所有解决方案并尝试了所有...但仍然没有任何效果

javascript - Firebase - 同时更新特定字段而不替换所有数据

javascript - 使用 mongoose 增加 mongodb 文档内属性的值

php - 将机器人与人类访客区分开来获取统计信息?

像社交媒体这样的 Flutter 应用程序

javascript - 使用 Hooks 将 React 类转换为功能组件。如何修复 "uncontrolled input"错误

javascript - 是否有任何理由使用 (window.)top 来通过 JavaScript 引用当前窗口?

javascript - jQuery css() 不在条件语句中工作