Получить данные от каждого ребенка с помощью, где Firebase - PullRequest
0 голосов
/ 01 марта 2019

Я структурирую firebase для системы кодов купонов.Я пытаюсь добиться того, чтобы пользователь не мог использовать купон больше указанного лимита.Я сохранил couponUsage, по которому каждый купон будет иметь ограничение на использование.

Моя древовидная структура:

enter image description here

Inthis, «2019», «fortune», «happy» - это кодовые имена купонов, а «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()));
        })
    })
  };
};

Я использую избыточность, так что это мой файл действий.В этом я могу получить весь узел couponUsages.Но мне нужно выбрать только номера мобильных телефонов для каждого ребенка, например, в этом коде три купона, и у каждого есть пользователь с именем 9999999999. Поэтому мне нужно выбрать только этого пользователя из всех трех купонов.

Как этого добиться?Потому что, когда пользовательская база начинает расти, было бы неправильно иметь целые данные и фильтровать определенные данные и т. Д.

1 Ответ

0 голосов
/ 01 марта 2019

Вы должны добавить больше полей в базу данных, например:

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')

...