Firebase 在 Nodejs 中处理事务

Firebase handle transactions in Nodejs

Firebase 已经记录了如何使用 Java 而不是使用 Nodejs(document)

处理事务

由于其结构交易可能 return 一开始为空 运行 并且与 Java 不同,Nodejs 没有 getValue()。从交易中 return 得到的是价值本身。那么如何将上面的结构应用到 Nodejs 中呢?

在我的代码中,数据可能为空,如果是这种情况,它必须将计数设置为 1。但是当我得到 "false nulls" 时,我不知道该怎么做。

 admin.database().ref(`/matches/${uid}/${matchUID}`)
                                .transaction(current => {

                                    if (current === null) {                      
                                        userMatchesRef.child(matchUID).set(1);
                                    }
                                    else {                                     
           userMatchesRef.child(matchUID).set(current + 1);

                                    }
                                })

https://firebase.google.com/docs/database/web/read-and-write#save_data_as_transactions 有 node.js 可能有用的文档。为了帮助您处理假空值,请考虑添加更多信息。

对于 current 值,Firebase 数据库事务几乎总是最初由 null 触发。您将需要处理这个问题,即使您知道该值不是 null。然后你的回调会被再次调用,然后你会得到一个更合理的 current 值。有关 Firebase 数据库事务如何工作的解释,请在此处查看我的回答:。虽然它适用于 Java,但相同的逻辑适用于所有 Firebase SDK。

有关在 Node.js SDK 中处理事务的 Firebase 文档,请参阅 https://firebase.google.com/docs/database/admin/save-data#section-transactions。但是克里斯的回答中的链接也可以使用,因为 Node.js 和 Web SDK 在这方面的功能相同。