Очистка пользовательских данных из Cloud Firestore после выхода из системы - PullRequest
0 голосов
/ 10 июня 2019

Я пишу функцию очистки всех пользовательских данных (коллекций, вложенных коллекций и изображений) из Cloud Firestore после того, как он выйдет из учетной записи.

Для этого я использую код из здесь .

Мой код:

'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, и в журнале функций я получаю сообщение об ошибке:

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)

Помогите решить проблему с удалением всех пользовательских данных после того, как пользователь выйдет из программы

1 Ответ

2 голосов
/ 10 июня 2019

Ссылка в вашем вопросе неверна.Однако, я полагаю, вы ссылаетесь на этот элемент документации: 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"

Затем повторно развернуть облачные функции, и все будет в порядке!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...