Как запросить вложенные объекты в FireStore - PullRequest
0 голосов
/ 20 октября 2018

Я хочу сохранить данные в следующем формате:

{
   "chatName": "Football",
   "chatMembers":
   [
      {
         "userId": "nSWnbKwL6GW9fqIQKREZENTdVyq2",
         "name": "Niklas"
      },
      {
         "userId": "V3QONGrVegQBnnINYHzXtnG1kXu1",
         "name": "Timo"
      },
   ]
} 

Моя цель - получить все чаты, в которых зарегистрированный пользователь с userId находится в списке chatMembers.Если userId зарегистрированного пользователя отсутствует в свойстве chatMembers, этот чат следует игнорировать.Это возможно?

Если это невозможно, как я могу добиться этого с помощью подколлекций?

Мой язык разработки - дартс, но вы также можете публиковать решения на других языках.

Мой текущийпопытка это, но это не работает:

_firestore.collection(collectionName).where("chatMembers.userId", isEqualTo: userId).snapshots()

1 Ответ

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

С августа 2018 года появился новый оператор array_contains, который позволяет фильтровать по значениям массива.Документ здесь: https://firebase.google.com/docs/firestore/query-data/queries#array_membership

Он очень хорошо работает с массивами строк.Тем не менее, я думаю, что невозможно запросить конкретное свойство объекта, хранящегося в массиве.Одним из обходных путей является запрос всего объекта следующим образом (в Javascript).Конечно, это может быть неосуществимо в любой ситуации ...

    var db = firebase.firestore();
    var query = db.collection('chatDocs').where("chatMembers", "array-contains", { userId: "xyz", userName: "abc" });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...