假设我的数据库如下所示:
project
└── users
├── safuhf8sdf76fs
│ ├── name: 'William'
│ └── favoriteColor: 'blue'
├── sffuef5srf72fd
│ ├── name: 'Emily'
│ └── favoriteColor: 'yellow'
└── rfdu4ffsgf42gi
├── name: 'Sam'
└── favoriteColor: 'red'
我正在尝试创建在更改/添加/删除任何favoriteColor
对象的user
值时触发的云功能。
我遇到问题的部分是创建对所述密钥的引用。
我知道我可以使用
收听用户的所有更改 exports.updatedFavoriteColor = functions.database.ref('/users').onWrite(event => { ... });
然后只需检查更改的数据,看它是否为favoriteColor
。
虽然这可行,但我更喜欢使用专门的触发器来监听所有用户对象的favoriteColor
键 - 类似这样的内容:functions.database.ref('/users').child(?).child('favoriteColor')
当William或Emily的favoriteColor
发生变化时,我会调用我更喜欢的函数,但是当Sam的name
被更改时,则不会调用。这可能吗?
答案 0 :(得分:3)
我想我更多地挖掘了它。
Firebase docs建议我可以执行以下操作:
exports.updatedFavoriteColor = functions.database.ref('/users/{pushId}/favoriteColor').onWrite(event => { ... });
这应该由任何用户favoriteColor
的更改触发,其中更新的特定用户由引用中的{pushId}
表示。在函数本身中,您可以使用event.params.pushId