我试图实现的只是通过事务增加数据库中的值。这按预期对我有用,但我的Firebase控制台总是出现以下错误:
Function returned undefined, expected Promise or value
我当前的通话如下:
exports.reportCounter = functions.database.ref('/user/{userId}/reports/{initiatorId}').onWrite((change,context) => {
const userId = context.params.userId;
return userRef.child(userId).child("numReports").transaction(function(numReports) {
return change.after.exists()?((numReports || 0) + 1):(numReports - 1);
})
});
我还尝试过直接退还诺言:
return userRef.child(userId).child("numToIncrement").transaction(function(numToIncrement) {
return ((numToIncrement || 0) + 1);
});
答案 0 :(得分:0)
这是您应该如何实现事务的方法,因此该函数始终返回promise:
exports.reportCounter = functions.database.ref('/user/{userId}/reports/{initiatorId}').onWrite((change, context) => {
const userId = context.params.userId;
let increment;
if (change.after.exists() && !change.before.exists()) {
increment = 1;
} else if (!change.after.exists() && change.before.exists()) {
increment = -1;
}
return userRef.child(userId).child("numReports").transaction(function(numReports) {
return (numReports || 0) + increment;
})
});