嵌套结构上的Firebase数据计算

时间:2016-06-24 05:58:26

标签: database database-design firebase firebase-realtime-database

我最近遇到过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中做到这一点?

0 个答案:

没有答案