云函数 - event.data.val()返回其映射子

时间:2017-03-20 19:07:52

标签: android firebase google-cloud-functions

Firebase Database

正如您在屏幕截图中看到的,我无法更新/ upvoters / inside / user_events / {uid} / {eventId}。 / events / {uid}从客户端更新,它可以工作。当我尝试使用console.log来调试我的云功能代码时,我意识到events.data.val()不返回/ upvoters /的更新但前一个值,但它接收" rating"的当前值。以下是我的客户端和云代码。

编辑:vote()更新events/{eventId},云功能将相同的值复制到/user_events/{uid}/{eventId}。我不知道投票()是如何无用的。我想要做的是在我使用vote()更新user_events时更新events{eventId},并且除了/upvoters/之外它会更新。所以基本上会发生什么;当vote()首次执行时/events/upvoters/是使用vote()创建的,exports.set_user_events将整个事件设置为/user_events/{eventId}/upvoters/,效果很好。当vote()第二次运行时,我删除upvoters地图中的upvoter,events/{eventId}/更新然后我的云功能正常工作,我已经用console.log命令调试它,并且此时已经看到{{1} }返回就好像没有删除upvoters但其他值(如rating)是更新值。  所以event.data.val()会更新,除了它的upvoters孩子。

云代码:

user_events/{uid}/{eventId}/

Android代码:

// Add an event to user_events
exports.set_user_events = functions.database.ref('social/events/{pushId}')
    .onWrite((event) => {
        const original = event.data.val();
        console.log('testValue',original);
        return admin.database().ref('social/user_events/' + original.owner.uid + "/" + event.params.pushId).set(original);
    });

0 个答案:

没有答案