Firebase的云函数-获取数据库值';同步';
我的实时数据库有这样的结构Firebase的云函数-获取数据库值';同步';,firebase,firebase-realtime-database,google-cloud-functions,Firebase,Firebase Realtime Database,Google Cloud Functions,我的实时数据库有这样的结构 - userId1 - meta - name - data - dataId1 - description - dataId2... - userId2.... 我正在尝试监视添加到dataIdx的内容,但也希望获得名称字段。我尝试了以下方法,但误用了parent方法。因此,我考虑了注释掉的行,但是是异步的,这会使我的代码变得更复杂,而在中,对集的调用或多或少是同步的 exports
- userId1
- meta
- name
- data
- dataId1
- description
- dataId2...
- userId2....
我正在尝试监视添加到dataIdx的内容,但也希望获得名称
字段。我尝试了以下方法,但误用了parent
方法。因此,我考虑了注释掉的行,但是是异步的,这会使我的代码变得更复杂,而在中,对集的调用或多或少是同步的
exports.sendNotification = functions.database.ref('/{userId}/presents/{dataId}')
.onWrite(event => {
var eventSnapshot = event.data;
var person = eventSnapshot.parent().parent().child("meta").child("name").val();
// var person = admin.database().ref('/' + event.params.userId + '/meta/name').once().val();
let p = eventSnapshot.child("description").val();
console.log(`${person} added ${p}`);
正确的方法是什么?这就是我提出的使用链接承诺来构建数据的方法
exports.sendNotification = functions.database.ref('/{userId}/presents/{presentId}')
.onWrite(event => {
let p = eventSnapshot.child("description").val();
return event.data.ref.parent.parent.child('meta/name').once("value")
.then(snapshot => {
let person = snapshot.val();
var payload = {
data: {
person: person,
...
}
};
不同步;它回报了一个承诺。只是示例中的调用代码没有等待set
调用解决或出错