我最近遇到过2016年I / O的Firebase,并决定迁移到firebase,因为当前的同步数据库存在问题。我以前用NoSQL数据库用map / reduce计算金额。但是,firebase中没有map / reduce。那么,从下面解释的结构计算火基数量的有效方法是什么,或者有更好的方法来计算结构?
结构: 用户可以为他们参与的活动添加费用详细信息。费用明细可以包含多人和多人。
因此,例如,A人支付100,B支付200,他们平均分配。
在firebase中,它会是这样的:
"expenses" : {
"-randomId1" : {
"event" : "eventId",
"desc" : "event tickets",
"who_paid" : {
"uid-for-A" : {
"amount" : 100
},
"uid-for-B" : {
"amount" : 200
}
},
"paid_for" : {
"uid-for-A" : {
"amount" : 150
},
"uid-for-B" : {
"amount" : 150
}
}
},
...
// Another event expenses ..
...
}
我还可以直接在FeeId下的节点上为每个用户聚合存储,如:
"expenses" : {
"-randomId1" : {
"event" : "eventId",
"desc" : "event tickets",
"aggregation" : {
"uid-for-A" : -50, // 100 - 150
"uid-for-B" : 50 // 200 - 150
}
"who_paid" : {
"uid-for-A" : {
"amount" : 100
},
"uid-for-B" : {
"amount" : 200
}
},
"paid_for" : {
"uid-for-A" : {
"amount" : 150
},
"uid-for-B" : {
"amount" : 150
}
}
},
...
// Another event expenses ..
...
}
如何计算每个用户在活动结束时的总费用?
如果长时间活动的费用超过100,该怎么办?我怎么能在firebase中做到这一点?