我需要减少 Firebase 实时数据库中存储的计数器(名为 credits)。
要减少计数器,我这样做:
var ref = admin.database().ref('licenseCredits/' + name + '/credits');
ref.transaction( (value) => {
if (value === null) {
return 0;
} else if (typeof value === 'number') {
return value - 1;
} else {
console.log('The counter has a non-numeric value: ');
}
});
credits 字段正在正确递减。 我将此代码放入可调用函数中,但我不知道如何将递减的值返回给调用者。如果我只是返回 ref.transaction 结果,我会得到一个“未处理的 RangeError 异常”。
最佳答案
根据下面的文档,应该实现 onComplete 函数。
https://firebase.google.com/docs/reference/js/firebase.database.Reference#transaction
var ref = admin.database().ref('licenseCredits/' + name + '/credits');
ref.transaction( (value) => {
if (value === null) {
return 0;
} else if (typeof value === 'number') {
return value - 1;
} else {
console.log('The counter has a non-numeric value: ');
}
}, function(error, committed, snapshot) {
if (error) {
console.log('Transaction failed abnormally!', error);
} else if (!committed) {
console.log('We aborted the transaction.');
} else {
console.log('Success!');
}
console.log("Credit data: ", snapshot.val());
});
关于javascript - 以原子方式递增 Firebase 实时数据库中的共享计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52414529/