Обновите поле пожарного депо из нескольких документов - PullRequest
0 голосов
/ 08 февраля 2020

DB

Я хочу обновить поле isSeen до 1, отфильтрованное сообщениями idTo в коде флаттера.

void onSeenMessages(){

    Stream<QuerySnapshot> messageRef = Firestore.instance
        .collection("messages")
        .document(groupChatId)
        .collection(groupChatId)
        .snapshots();

    messageRef. {
      field.documents. {
        productName.add(field.documents[index]["name"]);
      });
    });

}

Ответы [ 2 ]

0 голосов
/ 09 февраля 2020

Да, идентификатор документа неизвестен, и мне нужно проверить все документы. вот тот, который я нашел и сейчас отлично работает, дайте мне знать, если это можно оптимизировать.

void onSeenMessages () async {

CollectionReference ref = Firestore.instance
    .collection('messages')
    .document(groupChatId)
    .collection(groupChatId);

QuerySnapshot eventsQuery =  await ref.where('idTo', isEqualTo: id).where('isSeen', isEqualTo: 0).getDocuments();

eventsQuery.documents.forEach((msgDoc) {
  msgDoc.reference.updateData({'isSeen': 1});
});

}

0 голосов
/ 09 февраля 2020

Как я понимаю, вам нужно изменить (isSeen) поле:

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

Firestore.instance.collection('messages').document(groupChatId).collection(groupChatId).document(documentID).updateData({
            'isSeen ': 1,
      });

с documentID как на этом изображении:

enter image description here

Если вы не знаете, как получить documentID? Пожалуйста, скажите мне.

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