首页 > 解决方案 > 循环将文档添加到 Google Firestore

问题描述

我正在尝试遍历 aList以将每个项目添加到google firestore doc. 但是,我面临的问题是只有最后一项List被添加到 doc中。

注意:该行print("=== $i POST SUCCESSFULLY ADDED ====")按预期打印增量 5 次

问题:如何让这个循环将所有项目添加到 firestore 文档?

  void addPost() {
    DocumentReference documentReferencer = _firestore.collection('posts').doc();
    var i = 0;
    while (i < 5) {
      documentReferencer.set(postsData[i]);
      print("=== $i POST SUCCESSFULLY ADDED ===="); //PRINTS 5 TIMES
      i++;
    }
  }

标签: androidflutterdart

解决方案


我不完全知道您的问题出在哪里,但看起来您的代码忽略了将数据发布到服务器是一项asynchronous操作这一事实。

换句话说,我希望您需await要这样做。

另外,我会重构循环以提高可读性。

你的代码应该是这样的:

Future<void> addPost() async {
    DocumentReference documentReferencer = _firestore.collection('posts').doc();
    for(final post in postsData) {
      await documentReferencer.set(post);
      print("=== $i POST SUCCESSFULLY ADDED ===="); //PRINTS 5 TIMES
    }
  }

推荐阅读