【问题标题】:Retrieve data from every child with a where Firebase使用 where Firebase 从每个孩子那里检索数据
【发布时间】:2019-03-01 02:52:15
【问题描述】:

我正在将 firebase 构建为优惠券代码系统。我想要实现的是,用户不能使用超过指定限制的优惠券。我保留了一张优惠券使用情况,每张优惠券都有每次使用限制。

我的树结构:

其中,“2019”、“财富”、“快乐”这些是优惠券代码名称,“9999999999”是用户手机号码(用户UID)。该值是用户使用该代码获取该特定优惠券代码的次数。

所以,我所做的是,当用户使用代码时,它将成为该代码下的新条目。并且当用户重用代码时,该值将从 1 变为 2 甚至更大,直到另一棵树中指定的限制。

这是我的代码:

export const fetchCouponCode = () => {
return (dispatch) => {
    firebase.database().ref('couponCodes').once('value', function(couponSnap){
        firebase.database().ref('couponUsages').once('value', function(usageSnap){
            console.log( extend({}, couponSnap.val(), usageSnap.val()));
        })
    })
  };
};

我正在使用 redux,所以这是我的操作文件。在此我能够获取整个节点优惠券使用情况。但是我需要的是只获取每个孩子的手机号码,例如这个有三个优惠券代码,每个都有一个名为 9999999999 的用户。所以我需要从所有三个优惠券中只获取这个用户。

如何做到这一点?因为当用户群开始增加时,拥有完整的数据和过滤特定的数据等是不好的。

【问题讨论】:

    标签: javascript firebase react-native firebase-realtime-database


    【解决方案1】:

    您应该向 firebase 添加更多字段,例如:

    coupon
      fortune
         userid: 999999999
         quantity: 2
    

    然后就可以使用了

    firebase.database().ref('couponCodes').child('fortune')
                       .orderByChild('userid')
                       .equalTo(999999999);
    

    记得在规则上设置.indexOn

    或者

    您可以有一个仅用于存储优惠券密钥的优惠券列表,如下所示:

    coupons
      userid
        fortune
        happy
    

    您可以从这里取回幸运、快乐、...等钥匙。

    或者你改变你的优惠券结构

    coupons
      userid-9999999999
        fortune: 123
        happy: 434
    

    然后检索firebase.database().ref('coupons').child('userid-9999999999')

    【讨论】:

    • 明白,但我不想限制 child('fortune'),因为可以有几十个优惠券代码。我期望的是在每个优惠券代码上搜索特定用户。
    • 所以首先您可以为用户的优惠券列表创建 1 个字段。您可以从中获取列表优惠券。然后从列表中once
    • 无法理解,优惠券列表已归档?能简单解释一下吗?
    • 其实我想到了这个@tuledev。但是还有另外一个父条件,即全部使用优惠券,例如,fortune 最多可以使用 500 次!这就是我使用优惠券名称而不是使用 userId 的原因!由于使用优惠券名称,我可以通过计算每个优惠券代码下的 userId 数量来计算总使用量!有什么解决方法吗?
    • 我认为目前在 Firebase 数据库中计算优惠券的子项不是一个好习惯。如果你有 100 万个孩子怎么办?我通常使用另一个字段进行计数。为用户添加幸运券后,增加fortune_count 1。
    猜你喜欢
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多