在火力地堡的NodeJS手柄交易
火力地堡记录了如何处理与Java,但不与交易的NodeJS(document)
由于它的结构,交易可能在第一次运行时返回null,不像在Java中的NodeJS没有的getValue()。什么是从事务返回是本身的价值。所以,我怎么可以申请以上的的NodeJS结构?
在我的代码中的数据可能为空,如果是这样的情况下,必须设置计数为1。但是,当我收到“假空”我不知道该怎么做。
admin.database().ref(`/matches/${uid}/${matchUID}`)
.transaction(current => {
if (current === null) {
userMatchesRef.child(matchUID).set(1);
}
else {
userMatchesRef.child(matchUID).set(current + 1);
}
})
回答如下:
火力地堡数据库事务几乎都是最初引发与该null
值current
。您将需要处理这个问题,甚至当你知道一个事实,即该值不null
。那么你的回调将被再次调用,然后你会得到current
一个比较合理的值。对于火力地堡数据库事务如何工作的说明,请参阅我的答案在这里:Firebase runTransaction not working - MutableData is null。虽然它是Java,同样的逻辑适用于所有火力地堡的SDK。
有关处理在Node.js的SDK交易火力地堡文档,请参阅https://firebase.google/docs/database/admin/save-data#section-transactions。但是,从克里斯的答案的链接也能工作,为的Node.js和网络SDK函数在这方面是相同的。
在火力地堡的NodeJS手柄交易
火力地堡记录了如何处理与Java,但不与交易的NodeJS(document)
由于它的结构,交易可能在第一次运行时返回null,不像在Java中的NodeJS没有的getValue()。什么是从事务返回是本身的价值。所以,我怎么可以申请以上的的NodeJS结构?
在我的代码中的数据可能为空,如果是这样的情况下,必须设置计数为1。但是,当我收到“假空”我不知道该怎么做。
admin.database().ref(`/matches/${uid}/${matchUID}`)
.transaction(current => {
if (current === null) {
userMatchesRef.child(matchUID).set(1);
}
else {
userMatchesRef.child(matchUID).set(current + 1);
}
})
回答如下:
火力地堡数据库事务几乎都是最初引发与该null
值current
。您将需要处理这个问题,甚至当你知道一个事实,即该值不null
。那么你的回调将被再次调用,然后你会得到current
一个比较合理的值。对于火力地堡数据库事务如何工作的说明,请参阅我的答案在这里:Firebase runTransaction not working - MutableData is null。虽然它是Java,同样的逻辑适用于所有火力地堡的SDK。
有关处理在Node.js的SDK交易火力地堡文档,请参阅https://firebase.google/docs/database/admin/save-data#section-transactions。但是,从克里斯的答案的链接也能工作,为的Node.js和网络SDK函数在这方面是相同的。