Получить данные, если в firebase существует свойство - PullRequest
0 голосов
/ 20 ноября 2018

Итак, у меня есть БД с 25000 пользователей.И мне нужно захватить данные пользователей, которые имеют определенные свойства в своем аккаунте.Как это:

let users = arrayFromObject(await firebase.database().ref('Users')
    .orderByChild('transactions')
    .once('value').then(r => r.val()).catch(e => console.log(e)));
console.log(users);
users = users.filter(u => {
    if (u.transactions) {
        return u;
    }
});
console.log(users);

И это работает.Но, оказывается, только 630 пользователей сказали, что собственность.Как могут получить только пользователи, которые имеют свойство transactions?Я думал о чем-то вроде orderByChild('transactions').exists(), но, насколько я знаю, этой функции не существует.

Как я могу получить только пользователей, которые имеют поле transactions в своей учетной записи, и отфильтровать ихсервер?

Ответы [ 3 ]

0 голосов
/ 20 ноября 2018

Вы можете сделать это:

let ref = firebase.database().ref("Users");

ref.orderByChild("transaction").on("value", function(snapshot) {
if(snapshot.exists()){
  console.log("the user has the transaction property");
    }
 });

Здесь снимок находится на узле Users, затем, используя snapshot.exists(), вы сможете получить всех пользователей, которые имеют только свойство transaction.

Вы можете изменить базу данных на:

UserTransaction
         john  : true
         peter : true

или на эту:

UserTransaction
         userId
           transaction : true
         userId
           trasansaction : true

Таким образом, вы сможете получать только тех пользователей, у которых есть свойство транзакции

0 голосов
/ 22 ноября 2018

Хорошо, я нашел это!Вот что я сделал:

const users = arrayFromObject(await firebase.database().ref('Users')
    .orderByChild('transactions').startAt(1).once('value').then(r => r.val()));
0 голосов
/ 20 ноября 2018

Полагаю, именно здесь вам нужно переосмыслить свою схему и использовать денормализацию.Таким образом, вам, вероятно, вообще не нужно будет делать запрос.

https://www.youtube.com/playlist?list=PLl-K7zZEsYLlP-k-RKFa7RyNPa9_wCH2s

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...