Есть ли пункт "существует", где я могу использовать с firestore? - PullRequest
0 голосов
/ 17 мая 2018

Вариант использования: поиск разговоров, в которых я являюсь участником.

Учитывая набор бесед, есть ли способ использовать предложение where exists для свойств вложенного объекта?Я использую объект с идентификатором в качестве ключа, надеясь, что это будет то, что я могу выполнить запрос where.Должен ли я вместо этого поместить поле участников в массив?

 db.collection('conversations')
            .where('participants.${userId}', 'exists', true)
            .get()
            .then(() => {
                // ...
            });

Пример объекта разговора

{ 
  id: 'foo'
  participants: { 
    userIdA: {
       username: 'bar'
    },
    userIdB: {
       username: 'joe'
    }
  }
}

1 Ответ

0 голосов
/ 18 мая 2018

Предполагая, что ваш пример объекта беседы является полным примером, все, что вам нужно сделать, это установить для каждого участвующего userId значение true, а затем запрос должен выглядеть следующим образом:

db.collection('conversations')
  .where(`participants.${userId}`, ==, true)
  .get()
  .then(snapshot => {
    // ...
  });

Если выЕсли вам нужно узнать больше о конкретном пользователе, например его имени, вы можете просто найти его в коллекции users, поскольку вы знаете его идентификатор.

db.doc(`users/${userId}`)
  .get()
  .then(snapshot => {
    // ...
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...