我在找一种方法清理整个藏品。我看到了一个批处理更新选项,但这需要我知道集合中的所有文档in。
我正在寻找一种简单地删除集合中的每个文档的方法。
编辑:下面的答案是正确的,我使用了以下方法:
func delete(collection: CollectionReference, batchSize: Int = 100) {
// Limit query to avoid out-of-memory errors on large collections.
// When deleting a collection guaranteed to fit in memory,
// batching can be avoided entirely.
collection.limit(to: batchSize).getDocuments { (docset, error) in
// An error occurred.
let docset = docset
let batch = collection.firestore.batch()
docset?.documents.forEach {
batch.deleteDocument($0.reference)
}
batch.commit {_ in
self.delete(collection: collection, batchSize: batchSize)
}
}
}发布于 2017-12-18 01:49:24
没有API可以一次性删除整个集合(或其内容)。
若要删除云图恢复中的整个集合或子集合,请检索集合或子集合中的所有文档并删除它们。如果您有更大的集合,您可能希望在较小的批中删除这些文档,以避免内存不足的错误。重复此过程,直到删除了整个集合或子集合。
该文档中甚至有一个Swift示例,因此我建议您尝试一下。
Firebase CLI允许您使用单个命令删除整个集合,但它只是调用API来批量删除该集合中的所有文档。如果这适合您的需要,我建议您查看(稀疏) 命令。
发布于 2019-02-02 02:03:42
以下javascript函数将删除任何集合:
deleteCollection(path) {
firebase.firestore().collection(path).listDocuments().then(val => {
val.map((val) => {
val.delete()
})
})
}这是通过遍历每个文档并删除每个文档来实现的。
或者,您可以使用Firestore的批处理命令,并使用以下函数一次性删除所有命令:
deleteCollection(path) {
// Get a new write batch
var batch = firebase.firestore().batch()
firebase.firestore().collection(path).listDocuments().then(val => {
val.map((val) => {
batch.delete(val)
})
batch.commit()
})
}发布于 2019-01-16 15:04:55
现在,在firebase CLI中有一个选项可以删除整个防火墙数据库:
firebase firestore:delete --all-collectionshttps://stackoverflow.com/questions/47860812
复制相似问题