【发布时间】:2020-05-20 15:54:07
【问题描述】:
我是 Firestore 的新手,试图找出一种使用 Dart 在 Firestore 中添加一些文档的快速方法。
我使用了下面的代码。我在一个列表中有大约 3000 个字符串,它最终添加了所有 3000 个文档,但是花了很长时间,大约 10 分钟,并且在 batch.commit 之后我还收到一条错误消息,超过了 500 个限制,甚至虽然它添加了所有 3000 个文档。
我知道我应该一次将其分解为 500 个,但它添加了列表中的所有文档这一事实对我来说没有意义。我在 Firestore 控制台中检查了所有 3000 个文档。
每次添加文档时,我都需要创建一个文档 ID。我究竟做错了什么?使用add获取文档引用,然后batch.setData可以吗?
Future<void> addBulk(List<String> stringList) async {
WriteBatch batch = Firestore.instance.batch();
for (String str in stringList) {
// Check if str already exists, if it does not exist, add it to Firestore
if (str.isNotEmpty) {
QuerySnapshot querySnapshot = await myCollection
.where('name', isEqualTo: str)
.getDocuments(source: Source.cache);
if (querySnapshot.documents.length == 0) {
UserObject obj = UserObject(name: str);
DocumentReference ref = await myCollection.add(obj.toMap());
batch.setData(ref, UserObject.toMap(), merge: true);
}
}
}
batch.commit();
}
【问题讨论】:
标签: dart google-cloud-firestore