Как проверить, содержит ли массив две конкретные строки в Firestore? - PullRequest
1 голос
/ 16 марта 2019

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

В конце я просто хочу проверить, существует ли чат, а затем вернуть false, а затем попытаться создать другой чат с теми же двумя конкретными идентификаторами пользователя.

Моя проблема заключается в запросе массивасодержание.

Я пытался с

chatroomsCollection.where('members', '==', firstUserID).where('members', '==', secondUserID).limit(1).get() 

и пытался

chatroomsCollection.where('members','array-contains', firstUserID).where('members', 'array-contains', secondUserID).limit(1).get()

, но это не работает.

Можно ли даже запросить несколько строк с элементами внутри массива в noSQL?

1 Ответ

4 голосов
/ 16 марта 2019

Если вы хотите сделать запрос подобным образом, вам потребуется другая структура данных. Вместо этого рассмотрим поле типа объекта следующим образом:

members: {
    'uid1': true,
    'uid2': true
}

Затем вы можете запросить документы следующим образом:

chatroomsCollection
    .where('members.uid1', '==', true)
    .where('members.uid2', '==', true)
    .limit(1)
    .get()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...