Flutter Firestore где пункт, используя карту - PullRequest
0 голосов
/ 02 января 2019

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

Firestore Screen

var snap = await Firestore.instance
        .collection('user_posts')        
        .where("confirmations.${user.id}",isEqualTo: true)
        .getDocuments();

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

Какая-то идея, как его получить?

Спасибо !!

1 Ответ

0 голосов
/ 02 января 2019

Вы захотите превратить поле confirmations в массив и использовать (относительно недавно) операции array-contains и arrayUnion.

Эквивалентный запрос с таким массивом станет:

var snap = await Firestore.instance
    .collection('user_posts')        
    .where("confirmations", arrayContains: user.id)
    .getDocuments();

И таким образом вам нужен только индекс для confirmations, который добавляется автоматически.

Подробнее об этом см .:

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