正如您在屏幕截图中看到的,我无法更新/ 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);
});