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