从每个有Firebase的孩子那里检索数据

时间:2019-03-01 02:52:15

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

我正在将Firebase构建为优惠券代码系统。我要达到的目的是,用户不能使用超过指定限制的优惠券。我保留了couponUsage,每个优惠券都有使用限制。

我的树结构:

enter image description here

在此,“ 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,所以这是我的操作文件。在此,我能够获取整个节点的couponUsages。但是我需要的是仅获取每个孩子的手机号码,例如,其中有三个优惠券代码,每个都有一个叫9999999999的用户。因此,我只需要从所有三个优惠券中获取此用户。

如何实现?因为当用户群开始增加时,拥有完整的数据并过滤特定的数据等都是不好的。

1 个答案:

答案 0 :(得分:0)

您应在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')