通过Cloud Functions删除整个集合

时间:2018-08-02 15:06:54

标签: javascript node.js firebase google-cloud-functions

通过在Cloud Functions中创建的函数删除集合

删除用户后,我需要删除包含多个文档的整个集合,因此我决定创建一个函数,以便在删除用户时都会触发该函数。

下面是代码。

Cloud Functions index.js ):

MyRunner

尝试执行firebase deploy命令-仅功能时,会发生以下错误:

65:11警告箭头功能预期返回值不一致-返回

65:18警告避免嵌套promises promise / no-nesting

69:11错误每个then()应该返回一个值或抛出promise / always-return

✖3个问题(1个错误,2个警告)

我在做什么错了?

删除用户后如何删除整个收藏集?

如果您可以按照我应采用的逻辑发布上面的代码,我将不胜感激。

1 个答案:

答案 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