我正在将Firebase构建为优惠券代码系统。我要达到的目的是,用户不能使用超过指定限制的优惠券。我保留了couponUsage,每个优惠券都有使用限制。
我的树结构:
在此,“ 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的用户。因此,我只需要从所有三个优惠券中获取此用户。
如何实现?因为当用户群开始增加时,拥有完整的数据并过滤特定的数据等都是不好的。
答案 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')