【发布时间】:2021-01-29 09:48:15
【问题描述】:
我是 Cloud Functions 新手。
我有一个“驱动程序”表,但细节很少。
现在我想编写一个 Firebase 云函数,它将
- 只要设置了“drivers/{driverId}/history/{rideId}/rating”中的值就会触发。
- 将 totalRating (drivers/{driverId}/totalRating) 值更新为 oldTotalRatingValue + NewTotalRatingValue。
任何帮助或参考将不胜感激。
提前致谢。
=============我的方法======================
exports.increaseRating = functions.database.ref('/drivers/{driverId}/history/{historyId}/rating')
.onUpdate((snapshot, context) => {
var newRating = snapshot.after.val();
var oldRating = 0;
var db = admin.database();
var ref = db.ref(`/drivers/${context.params.driverId}/totalRating`);
ref.once("value", function(snapshot) {
oldRating = snapshot.val();
});
console.log(oldRating);
var finalRating = oldRating + newRating;
return admin.database().ref(`/drivers/${context.params.driverId}`).update({
"totalRating": finalRating,
})
})
但我的 var oldRating 不会更新到数据库值。
【问题讨论】:
-
与特定问题无关,但您可能需要阅读有关数据结构的 Firebase 文档,因为它针对您拥有的数据嵌套类型提出了建议:firebase.google.com/docs/database/web/…
-
如果目标是观察所有驱动程序的历史变化,这不是正确的结构。您应该打破每个驱动程序的历史并将其存储在更高级别并观察其变化.
标签: javascript node.js firebase firebase-realtime-database google-cloud-functions