【问题标题】:Cleanup user data from Cloud Firestore after sign out a user退出用户后从 Cloud Firestore 中清理用户数据
【发布时间】:2019-06-10 10:47:43
【问题描述】:

我编写了一个函数,女巫在他退出帐户后从 Cloud Firestore 中清除所有用户数据(集合、子集合和图像)。

为此,我使用来自here 的代码。

我的代码:

'use strict';

const functions = require('firebase-functions');
const firebase_tools = require('firebase-tools');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
//const bucket = admin.storage().bucket("gs://movere-point.appspot.com/");

exports.recursiveDelete = functions.runWith({
    timeoutSeconds: 540,
    memory: '2GB'
})
.auth.user().onDelete((user) => {

    // const path = data.path;
    const path = "/Users/" + user.uid;

    console.log(path);

    return firebase_tools.firestore.delete(path, {
        project: process.env.GCLOUD_PROJECT,
        recursive: true,
        yes: true,
        token: ""
    })
    .then(() => {
        return {
            path: path 
        };
    });
});

我从 Firebase 控制台中删除了一个用户,在 Function 的日志中,我收到了错误:

Error
    at new FirebaseError (/srv/node_modules/firebase-tools/lib/error.js:9:18)
    at module.exports (/srv/node_modules/firebase-tools/lib/responseToError.js:38:12)
    at Request._callback (/srv/node_modules/firebase-tools/lib/api.js:39:35)
    at Request.self.callback (/srv/node_modules/request/request.js:185:22)
    at emitTwo (events.js:126:13)
    at Request.emit (events.js:214:7)
    at Request.<anonymous> (/srv/node_modules/request/request.js:1161:10)
    at emitOne (events.js:116:13)
    at Request.emit (events.js:211:7)
    at IncomingMessage.<anonymous> (/srv/node_modules/request/request.js:1083:12)

帮助解决用户离开程序后删除所有用户数据的问题

【问题讨论】:

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


    【解决方案1】:

    您问题中的链接不正确。但是,我猜你参考了这个文档项:https://firebase.google.com/docs/firestore/solutions/delete-collections

    在这个例子中你会注意到在做的时候使用了一个令牌:

    return firebase_tools.firestore
      .delete(path, {
        project: process.env.GCLOUD_PROJECT,
        recursive: true,
        yes: true,
        token: functions.config().fb.token
      })
    

    在您的代码中,您为此令牌分配了一个空值,这就是您遇到错误的原因。

    您需要在终端中使用 Firebase CLI 执行以下操作:

    firebase login:ci
    

    您将获得一个令牌值,例如:

    ✔  Success! Use this token to login on a CI server:
    
    Z/A01c9zOI74FUgPJm5aEN9d2XyTKPgQkRlePQigxBBCSOUQ_0ktLW4mfAX3x4rFLL
    

    然后你需要将它存储为环境配置数据。由于令牌值为functions.config().fb.token,您应该这样做:

    firebase functions:config:set fb.token="Z/A01c9zOI74FUgPJm5aEN9d2XyTKPgQkRlePQigxBBCSOUQ_0ktLW4mfAX3x4rFLL"
    

    然后重新部署 Cloud Functions 就可以了!

    【讨论】:

    • 这里token: "TOKEN"我需要设置一个用户的token,需要删除吗?
    • 对不起,我不明白你的评论。只需按照答案中的说明:您生成一个令牌值并将其存储在配置数据中。
    • 哦...我明白我的错误了。谢谢!
    猜你喜欢
    • 2019-10-25
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多