Как переместить всю коллекцию в Cloud Firestore, используя флаттер? - PullRequest
0 голосов
/ 03 мая 2019

Я знаю, что для перемещения документа нам нужно скопировать и вставить. Но подколлекции пропущены при копировании-> вставке.

Так как мне скопировать и вставить все документы в коллекции?

из пути - / main / issueOpen / list / -Lb2yhvNLN6NsvCXAGyM / chat / [содержит много документов]

к пути - / main / issueClosed / list / -Lb2yhvNLN6NsvCXAGyM / chat / [все перемещено сюда]

...
    Future<Null> closeIssue() async {
        DocumentReference fromDocument = await Firestore.instance
            .collection("main").document("issueOpen").collection("list")
            .document(chatId);
        DocumentReference toDocument = await Firestore.instance
            .collection("main").document("issueClosed").collection("list")
            .document(chatId);
        fromDocument.get().then((datasnapshot) {
          if (datasnapshot.exists) {
            toDocument.setData(datasnapshot.data).whenComplete(() {
            }).catchError((e) => print(e));
          }
        });
      }
...

1 Ответ

0 голосов
/ 03 мая 2019

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

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

Если количество документов не слишком велико, рассмотрите возможность сделать это в транзакции, чтобы это происходило атомарно на сервере.

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