Firebase交易
我正在使用firebase的节点,并试图使用事务来创build商店数据时,我得到:
[Error: Set]
我很难搞清楚这个错误代码的含义。 我已经重写了我的代码,暂时禁用了安全规则,但是我得到了同样的错误。
以下是我正在使用的代码:
myRef.child(user).transaction(function(currentData) { if (currentData === null) { //data doesn't exist return { total: userTotal, left: userLeft, isText: userIsText }; } else { currentData.total += userTotal; currentData.left += userLeft; return { total: currentData.total, left: currentData.left, isText: currentData.isText }; } }, function(error, committed, snapshot) { if(error) { console.log('@line 281: FB Tx failed', error); } else if (!committed) { console.log('FB Tx aborted'); } });
我得到的实际控制台错误信息当然是:
@line 281: FB Tx failed [Error: Set]
任何有关错误代码应该表示什么样的错误的洞察/代码中出了什么问题? 我在脚本的其他地方有几乎相同的代码,这实际上是有效的,所以我很困惑…
提前致谢!
你正在看到的错误是表明由于在你的应用程序/代码中的其他地方写了一个事务正在中止。
Firebase事务通过将当地的转换函数应用于数据的当前状态并将新状态写入服务器来工作。 然而,如果你有一个调用ref.set(...)
, ref.update(...)
,或ref.remove()
代码中的其他地方相同的path,你会ref.remove()
变化无论如何,这就是交易中止的原因。
如果您无法跟踪此path上的更改,请尝试在应用程序启动时使用Firebase.enableLogging(true)
,以了解Firebase客户端在做什么。