Firebase已记录如何使用Java而不是Nodejs(document)处理事务
由于其结构,事务在首次运行时可能返回null,与Java不同,Nodejs没有getValue()。什么是从事务返回是本身的价值。那么如何将以上结构应用于Nodejs?
在我的代码中,数据可能为null,如果是这种情况,则必须将count设置为1。但是当我得到“ false null”时,我不知道该怎么做。
admin.database().ref(`/matches/${uid}/${matchUID}`)
.transaction(current => {
if (current === null) {
userMatchesRef.child(matchUID).set(1);
}
else {
userMatchesRef.child(matchUID).set(current + 1);
}
})
答案 0 :(得分:2)
https://firebase.google.com/docs/database/web/read-and-write#save_data_as_transactions的node.js文档可能会有所帮助。为了帮助您使用错误的null,请考虑添加更多信息。
答案 1 :(得分:1)
几乎总是最初用::Operation
值的null
触发Firebase数据库事务。即使您知道该值不是current
,也需要进行处理。然后您的回调将再次被调用,然后您将为null
获得更合理的值。有关Firebase数据库事务如何工作的说明,请在此处查看我的答案:Firebase runTransaction not working - MutableData is null。对于Java,相同的逻辑适用于所有Firebase SDK。
有关在Node.js SDK中处理事务的Firebase文档,请参阅https://firebase.google.com/docs/database/admin/save-data#section-transactions。但是chris的答案中的链接也将起作用,因为Node.js和Web SDK在这方面的功能相同。