我正在尝试在我的应用程序中创建用户评级系统,其中一个用户可以评价具有1-5星评级的另一个用户以及他们的体验描述。我遇到平均评级系统的问题,因为我的交易每个文档一次只能更新一个表。也许我会采用错误的方式,并可以使用一些建议或帮助。
计数字段可靠地更新,它将在我的测试中增加。它得到的平均评级正确计算不起作用。我想因为我试图在一个函数中做两个事务。
分贝:
"reputation" : {
"userID123" : {
"-LDXRfZPscamLvjDUbXb" : {
"ratingUserID2" : {
"rating" : 3,
"description" : "You are awesome!"
}
},
"asdfsdfsdf3333" : {
"ratingUserID3" : {
"rating" : 4,
"description" : "Great work."
}
}
"count" : 2,
"rating" : 3.5
}
},
...other data...
firebase功能:
exports.calculateReputation = functions.database.ref('/reputation/{userID}/{uniqueID}').onCreate((snap, context) => {
const data = snap.val();
const rating = data[Object.keys(data)].rating;
snap.ref.parent.child('/count').transaction((currentCount) => {
return currentCount + 1;
}, (error, committed, snapshot) => {
if (error) {
console.log('Transaction failed abnormally!', error);
} else if (!committed) {
console.log('We aborted the transaction (because ada already exists).');
} else {
console.log('added!');
console.log('ADD RATING:', rating);
}
var count = snapshot.val();
console.log('COUNT:', count);
snap.ref.parent.child('/rating').transaction((currentRating) => {
var newRating = Math.round( ((rating + currentRating) / count) * 10 ) / 10;
return newRating;
});
});
});