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
调用解决或出错