Удалить файл в облачном хранилище из облачных функций - PullRequest
0 голосов
/ 04 июня 2018

Я пытаюсь создать облачную функцию Google, которая удаляет изображения, связанные с объектом персонажа в базе данных Firebase в режиме реального времени.) .. Вот код функции:

const functions = require('firebase-functions');

// The Firebase Admin SDK to access the Firebase Realtime Database.
const admin = require('firebase-admin');
const gcs = require('@google-cloud/storage')({ 
  projectId: "PROJ_ID",
  keyFilename: "SERV_ACC.json LOCATED IN FUNCTIONS FOLDER"});

admin.initializeApp(functions.config().firebase);

exports.removePersonImage = 
functions.database.ref("users/{userId}/persons/{personId}")
 .onDelete((snapshot, context) => {
   const person = snapshot.val();    

   if (!person.photo || !person.photo.key) {
    console.log("Person doesn't have photo");
    return true;
   }

   var path = "user/" + context.params.userId + "/" + person.photo.key + ".jpg";

   console.log("Bucket path: " + path);

   return gcs.bucket(path)
    .delete()
    .then(() => {
      console.log("Image " + person.photo.key + " successfully deleted");
      return true;
    })
    .catch(err => {
      console.error("Failed to remove image " + person.photo.key);
      console.error("Error: " + err.message);
      return false;
    });
});

1 Ответ

0 голосов
/ 04 июня 2018

Я думаю, что вы получаете ссылку на Bucket с путем к файлу.

Сначала вы должны создать ссылку на ваш Bucket, а затем использовать метод file() в Bucket для создания файла.object.

Сначала объявите сегмент с именем корневого сегмента, которое вы видите в консоли хранения, но без gs://, следующим образом:

const bucket = gcs.bucket("***projectname***.appspot.com");  

Затем объявите файл с вложенными сегментами.(то есть "каталоги")

const file = bucket.file("user/" + context.params.userId + "/" + person.photo.key + ".jpg");

Затем вызовите delete:

return file.delete()
    .then(() => {
    ....

См. https://cloud.google.com/nodejs/docs/reference/storage/1.7.x/Bucket#file

и https://cloud.google.com/nodejs/docs/reference/storage/1.7.x/Storage#bucket

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