在火力地堡的NodeJS手柄交易

时间:2019-02-03 02:59:14

标签: node.js firebase firebase-realtime-database firebase-admin

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

                                    }
                                })

2 个答案:

答案 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在这方面的功能相同。