如何使用Flutter移动Cloud Firestore中的整个子集合?

时间:2019-05-03 08:03:56

标签: firebase flutter google-cloud-firestore

我知道要移动文档,我们必须复制并粘贴。但是子集合在复制->粘贴过程中丢失了。

那么我该如何复制和粘贴集合中的所有文档?

从路径开始-/ 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 :(得分:0)

Firestore中的所有读取操作都很浅。读取文档不会从该文档的子集合中读取任何数据。

这意味着要将文档及其子集合移动到新位置,您将必须复制该文档 并复制其子集合中的所有文档。

如果文档的数量不是太大,请考虑在事务中执行此操作,以使其在服务器上自动发生。