Firebase的云功能 - 同步获取数据库值'

时间:2017-05-25 05:53:50

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

我的实时数据库有这种结构

- userId1
   - meta
       - name 
   - data 
       - dataId1
           - description 
       - dataId2...
- userId2....

我试图监控dataIdx的添加内容,但也希望获得name字段。我尝试了以下方法,但误用了parent方法。所以我认为该行被注释掉了,但是.once是异步的,这开始使我的代码更复杂,而在examples中有set的调用或多或少是同步的

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}`);

这样做的正确方法是什么

1 个答案:

答案 0 :(得分:0)

这就是我使用链式承诺来构建我的数据

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,
                        ...
                    }
                };