【发布时间】:2018-12-03 10:54:47
【问题描述】:
我正在尝试创建一个 Firebase 云函数来计算节点属性的平均值。
这是我的实时数据库的结构
-- Buildings
- BuildingID1
- finalResult: 6.5
- Reviews
-ReviewID1
- rate : 10
-ReviewID2
- rate : 3
- BuildingID
- finalResult: 1.5
- Reviews
-ReviewID
- rate : 2
-ReviewID
- rate : 1
为此,每次添加/删除/更新子节点(即评论)时。我想检查 rate 属性并将其与其他评论的等级属性相加,然后将结果除以节点的数量。 ...最终结果将显示在名为 finalResult 的新属性中。
到目前为止,这是我的功能,但我正在努力寻找一种查询数据库的方法,以便从其他节点获取等级属性。你能帮帮我吗?
export const schoolUpdated = functions.database.ref('/buildings/{buildingId}/reviews/{buildingId}/rate').onWrite( (change, context) => {
const data = change.after.val();
// ** calculate the result by querying the the reviews **/
return change.after.ref.parent.parent.parent.child('finalResult').set(result);
});
【问题讨论】:
-
我认为,如果您同时保留每栋建筑物的运行计数和平均值,您的情况会更好。添加新评论时,您可以只获取这两个数字,然后写回这些运行值:
average=(average*count+rating)/(count+1)和count=count+1。
标签: typescript firebase firebase-realtime-database google-cloud-functions