【问题标题】:How to delete document collection and all nested data from auth.user.onDelete trigger如何从 auth.user.onDelete 触发器中删除文档集合和所有嵌套数据
【发布时间】:2020-03-22 23:28:27
【问题描述】:

目前删除用户数据的逻辑如下:

import * as admin from 'firebase-admin';
import * as functions from 'firebase-functions';

const firestore_tools = require('firebase-tools');

admin.initializeApp();

const Auth = admin.auth();
const UsersCollection = admin.firestore().collection(`users`);

exports.deleteUserDocuments = functions.auth.user().onDelete((user) => {
  const userID = user.uid;

  UsersCollection.doc(userID)
      .delete({})
      .catch(error => {
        return error
      });
});

但是由于用户文档记录包含包含其他文档和集合的嵌套集合,因此它们仍然保留,因为以下事实: When you delete a document, Cloud Firestore does not automatically delete the documents within its sub-collections

我进行了一些研究,并找到了有关如何创建可调用函数的文档: https://firebase.google.com/docs/firestore/solutions/delete-collections

但我想知道是否可以从auth.user.onDelete 触发器执行此逻辑?

更新解决方案

const firestore_tools = require('firebase-tools');

exports.deleteUserDocuments = functions.auth.user().onDelete((user) => {
    const userID = user.uid;
    const project = process.env.GCLOUD_PROJECT;
    const token = functions.config().ci_token;
    const path = `/users/${userID}`;

    console.log(`User ${userID} has requested to delete path ${path}`);

    return firestore_tools.firestore
        .delete(path, {
            project,
            token,
            recursive: true,
            yes: true,
        })
        .then(() => {
            console.log(`User data with ${userID} was deleted`);
        })
});

【问题讨论】:

  • 什么是 firestore_tools,你从哪里得到它?
  • @LeonardoRignanese 您可以从中获取软件包,还有一个很好的用例描述;-) npmjs.com/package/firestore-tools
  • 重要的是它是一个节点模块,因此在默认 FF 功能设置的节点版本中导入将不起作用。所以你必须要求它const firestore_tools = require('firebase-tools');
  • 谢谢,我建议你更新上面的解决方案(:
  • 完成,希望对您有所帮助:-)

标签: firebase google-cloud-firestore google-cloud-functions


【解决方案1】:

您可以在任何您想要的触发器中运行您想要的任何代码。触发器的类型与您可以运行的代码类型没有任何关系。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-23
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    相关资源
    最近更新 更多