删除用户后,我需要删除包含多个文档的整个集合,因此我决定创建一个函数,以便在删除用户时都会触发该函数。
下面是代码。
Cloud Functions( index.js ):
MyRunner
尝试执行firebase deploy命令-仅功能时,会发生以下错误:
65:11警告箭头功能预期返回值不一致-返回
65:18警告避免嵌套promises promise / no-nesting
69:11错误每个then()应该返回一个值或抛出promise / always-return
✖3个问题(1个错误,2个警告)
我在做什么错了?
删除用户后如何删除整个收藏集?
如果您可以按照我应采用的逻辑发布上面的代码,我将不胜感激。
答案 0 :(得分:0)
执行以下操作:
const db = admin.firestore();
exports.onUserDeleted = functions.auth.user().onDelete((user) => {
const collectionRef = db.collection(user.uid);
var promises = [];
return collectionRef.get()
.then(qs => {
qs.forEach(docSnapshot => {
promises.push(docSnapshot.ref.delete());
});
return Promise.all(promises);
})
.catch(error => {
console.log(error);
return false;
});
});
如代码所反映的那样,并按照文档中的建议进行操作(请参阅下面的摘录),如果集合很大,则可以批量删除文档。如果您认为有必要,我可以让您修改上面的代码。
如果集合较大,则可能希望分批删除文档,以避免内存不足的错误。重复 直到删除整个集合或子集合为止。 来源:https://firebase.google.com/docs/firestore/manage-data/delete-data#collections