Как я могу получить доступ к определенной папке внутри хранилища Firebase из облачной функции? - PullRequest
0 голосов
/ 30 декабря 2018

Я впервые использую облачную функцию Firebase.Мне удалось внести изменения в папку по умолчанию, используя:

exports.onFileUpload = functions.storage.bucket().object().onFinalize(data => {
const bucket = data.bucket;
const filePath = data.name;
const destBucket = admin.storage().bucket(bucket);
const file = destBucket.file(filePath);

, но теперь я хочу, чтобы функция запускалась из папки внутри папки хранения, как это enter image description here

Как я могу это сделать?

1 Ответ

0 голосов
/ 30 декабря 2018

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

т.е. вы не можете установить триггер облачного хранилища для 'User_Pictures/{path}'

Что вам нужно сделать, это проверить атрибуты объекта после запуска функции и соответственно обработать ее там.

Либо вы создаете функцию триггера для каждогоЕсли вы хотите обработать и остановить функцию, если это не тот путь, который вы ищете.

functions.storage.object().onFinalize((object) => {
  if (!object.name.startsWith('User_Pictures/')) {
    console.log(`File ${object.name} is not a user picture. Ignoring it.`);
    return null;
  }

  // ...
})

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

functions.storage.object().onFinalize((object) => {
  if (object.name.startsWith('User_Pictures/')) {    
    return handleUserPictures(object);
  } else if (object.name.startsWith('MainCategoryPics/')) {
    return handleMainCategoryPictures(object);
  }
})
...