我正在尝试允许用户从客户端批量添加一堆文档到Firestore。当文档不是很多时,它工作得很好,但当有大量文档(例如1000+文档)时,它会添加所有文档,然后就会挂起。如果我关闭并重新打开应用程序,我会看到所有文档都已按需添加。
我使用以下内容逐个添加每个文档:
self.collection.document(noteID).setData(record.dictionary)为什么在批量添加一堆文档后会挂起,但在较小的集合上却可以正常工作?有没有一种方法可以批量添加一堆文档到Firestore中,这样它们就不会挂起?
发布于 2020-08-20 07:13:53
这是因为每次写入都会生成一个需要执行的事务,而您的应用程序在等待每个事务响应时会挂起。
要在一个动作中编写大量文档,在官方文档中推荐使用Batch Writes。
只需考虑到每个批处理可以占用tpo 500写入。
要在批量写入时添加数据,您可以这样做:
let batch = self.batch()
//set Documents to add
let doc1 = self.collection(<COLLECTION>).document(noteID)
batch.setData(record.dictionary, forDocument: doc1)
//commit the batch
batch.commit() { err in
if let err = err {
print("Error writing batch \(err)")
} else {
print("Batch write succeeded.")
}
}https://stackoverflow.com/questions/63491376
复制相似问题