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

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


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

我遇到的问题是创建对所述密钥的引用。

我知道我可以通过以下方式收听用户的所有更改

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。

09-25 18:52