Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过云函数删除整个集合 通过在云函数中创建的函数删除集合_Javascript_Node.js_Firebase_Google Cloud Functions - Fatal编程技术网

Javascript 通过云函数删除整个集合 通过在云函数中创建的函数删除集合

Javascript 通过云函数删除整个集合 通过在云函数中创建的函数删除集合,javascript,node.js,firebase,google-cloud-functions,Javascript,Node.js,Firebase,Google Cloud Functions,当用户被删除时,我需要删除包含多个文档的整个集合,因此我决定创建一个函数,以便在用户被删除时触发该函数 下面是代码 (index.js): 尝试执行firebase部署命令时——仅函数会发生以下错误: 65:11警告箭头函数预期无返回值一致返回 65:18警告避免嵌套承诺承诺/不嵌套 69:11错误Each then()应返回值或抛出承诺/始终返回 ✖ 3个问题(1个错误,2个警告) 我做错了什么? 删除用户时,如何删除整个集合? 如果您能按照我应该应用的逻辑发布上述代码,我将不胜感激。请执行以

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

下面是代码

index.js):

尝试执行firebase部署命令时——仅函数会发生以下错误:

65:11警告箭头函数预期无返回值一致返回

65:18警告避免嵌套承诺承诺/不嵌套

69:11错误Each then()应返回值或抛出承诺/始终返回

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

我做错了什么?

删除用户时,如何删除整个集合?

如果您能按照我应该应用的逻辑发布上述代码,我将不胜感激。

请执行以下操作:

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; 
    });
});
正如您的代码所反映的,以及文档中所建议的(参见下面的摘录),如果收集量很大,您可以批量删除文档。如果你认为有必要的话,我让你修改上面的代码,

如果有较大的集合,则可能希望以较小的批删除文档,以避免内存不足错误。重复 处理,直到删除整个集合或子集合。 资料来源:

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; 
    });
});