Как я могу изменить размеры всех существующих изображений в хранилище Firebase? - PullRequest
2 голосов
/ 21 февраля 2020

Я использую расширение Resize Images в Firebase. Однако до того, как я добавил это расширение, я уже загрузил много изображений, они находятся в соответствующем контейнере для хранения и записи и связаны через URL в базе данных в реальном времени.

Есть ли способ, которым я могу изменить размеры всех существующих изображений внутри их корзины? Желательно без необходимости переназначать их URL с их сообщениями?

1 Ответ

0 голосов
/ 24 февраля 2020

Если вы посмотрите на код расширения «Изменить размер изображения», вы увидите, что облачная функция, лежащая в основе расширения, запускается событием onFinalize, которое означает:

Когда новый объект (или новое поколение существующего объекта) успешно создается в корзине. Это включает в себя копирование или перезапись существующего объекта.

Таким образом, без перезаписи / восстановления существующих изображений расширение не будет запущено.


Однако Вы можете легко написать свою собственную облачную функцию, которая делает то же самое, но запускается, например, путем вызова определенного c URL ( HTTPS cloud Function ) или путем создания нового документа в временная коллекция Firestore ( фоновый запуск CF ).

Эта облачная функция будет выполнять следующие шаги:

  1. Получить все файлы вашего сегмента, см. getFiles() метод Google Cloud Storage Node.js Клиентский API. Этот метод возвращает объект GetFilesResponse, который является массивом File экземпляров.
  2. Зацикливаясь по массиву, для каждого файла проверьте, имеет ли файл соответствующее измененное изображение в корзина (в зависимости от того, как вы настроили расширение, изображения с измененным размером могут находиться в указанной папке c)
  3. Если файл не имеет соответствующего изображения с измененным размером, выполните ту же бизнес-логи c облачной функции расширения для этого файла.

В зависимости от количества обрабатываемых изображений вам может потребоваться увеличить значение тайм-аута и / или выделенную память вашей облачной функции, см. https://firebase.google.com/docs/functions/manage-functions#set_timeout_and_memory_allocation

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