我在Cloud Firestore中有一个集合,它有数百万个文档和子集合。我想删除此集合及其所有文档和子集合。我们可以从Firebase控制台执行此操作,但是要删除此集合需要花费很多时间。
使用我可以删除此集合的任何firebase cli命令或node.js代码段吗?
答案 0 :(得分:1)
您可以通过删除集合的所有文档来删除它。您可以在official docs中阅读更多内容。此处的示例代码:
async function deleteCollection(db, collectionPath, batchSize) {
const collectionRef = db.collection(collectionPath);
const query = collectionRef.orderBy('__name__').limit(batchSize);
return new Promise((resolve, reject) => {
deleteQueryBatch(db, query, resolve).catch(reject);
});
}
async function deleteQueryBatch(db, query, resolve) {
const snapshot = await query.get();
const batchSize = snapshot.size;
if (batchSize === 0) {
// When there are no documents left, we are done
resolve();
return;
}
// Delete documents in a batch
const batch = db.batch();
snapshot.docs.forEach((doc) => {
batch.delete(doc.ref);
});
await batch.commit();
// Recurse on the next process tick, to avoid
// exploding the stack.
process.nextTick(() => {
deleteQueryBatch(db, query, resolve);
});
}
如果上述答案不起作用,则可以像here一样使用Cloud Functions
答案 1 :(得分:1)
Firebase CLI具有firestore:delete
命令,该命令也可以递归删除内容。请参阅其文档here。
请注意,API和CLI都不可能比控制台快得多。由于没有用于批量删除数据的API,因此它们基本上都采用相同的方法。