开发者问题收集

React Native Firebase 交易无法正常工作

2019-08-22
1005

我正在使用 React Native 和 Firebase 实时数据库开发应用程序。

在数据库中,我有一些如下所示的数据。

myRoot
  |
  |--myValue1: 0
  |
  |--myValue2: 2

然后,我想将这些值增加一并得到以下结果。

myRoot
  |
  |--myValue1: 1
  |
  |--myValue2: 3

为此,我使用了如下函数。

myFunction = () => {
   const myRef = firebase.database().ref('myRoot');

   return myRef.transaction((data) => {
      data.myValue1++;
      data.myValue2++;
      return data;
   })
   .then(console.log('Done'))
   .catch((error) => console.log(error));
}

但是,调用该函数后,出现以下错误。

[Unhandled promise rejection: TypeError: null is not an object (evaluating 'data.myValue1')]

我尝试拍摄 myRef快照 并将其打印在控制台中。它成功了,并打印了当前值。但是, transaction 不起作用并给出 null

请帮我解决这个问题。

3个回答

您需要检查 data 是否为 null,因为这会在第一次调用事务处理程序函数时发生。如果快照存在于您执行事务的数据库位置,则处理程序将使用快照再次调用。您可以在 文档 中的示例代码中看到正在执行此检查。

Doug Stevenson
2019-08-22

我相信 Sennen 是这样的:

myFunction = () => {
   const myRef = firebase.database().ref('myRoot');

   myRef.transaction((data) => {
        if(data) {
            if(data.myValue1) {
                data.myValue1++;
            } 
            if(data.myValue2) {
                data.myValue2++;
            }
        }

        return data;
   })
   .then(console.log('Done'))
   .catch((error) => console.log(error));
}
Stas Christiansen
2019-08-22

找到问题的原因。代码段没有问题。问题出在依赖项中。只需执行 npm install firebase --save ,然后执行 npm install 。重新启动项目。成功了!

Sennen Randika
2019-08-23