gpt4 book ai didi

firebase - 如何从 auth.user.onDelete 触发器中删除文档集合和所有嵌套数据

转载 作者:行者123 更新时间:2023-12-04 04:15:19 26 4
gpt4 key购买 nike

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

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

最佳答案

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

关于firebase - 如何从 auth.user.onDelete 触发器中删除文档集合和所有嵌套数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60806147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com