Хранить изображение в Firebase Storage из функции базы данных Firebase - PullRequest
1 голос
/ 21 марта 2019

Я создаю приложение в Firebase и пытаюсь вставить изображение в Firebase Storage из функции базы данных в реальном времени.

Функция запускается при вставке записи в БД.

Запись содержит URL-адрес изображения.

Я понимаю, что мне нужно прочитать это изображение, чтобы получить строку base64 и сохранить эту строку как изображение в Firebase Storage, но у меня нетидея, как этого добиться.

Кажется, что у меня нет доступа к объекту хранения Firebase внутри функции, я могу получить доступ к Bucket только через admin.storage().bucket() и не могу найти какую-либо функцию (например,put () в объекте хранения), позволяющий поместить строку base64 в качестве изображения в хранилище Firebase.

До сих пор я пытался сохранить изображение таким образом, но безуспешно:

const admin = require('firebase-admin');
const serviceAccount = require('./serviceAccountKey.json');

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  storageBucket: 'gs://my-bucket.appspot.com',
});

exports.handler = (event) => {
  const myBase64Image = 'someImageInBase64';
  admin.storage().bucket('folder').file('test').save(myBase64Image);
};

Ты хоть представляешь, как мне это сделать?

Заранее спасибо!

1 Ответ

2 голосов
/ 22 марта 2019

Хорошо, я наконец-то это сделал!

Вот как в итоге выглядит мой обработчик:

const admin = require('firebase-admin');
const request = require('request');

exports.handler = (event, context) => {
  const record = event.after.val();
  const storage = admin.storage.bucket();
  const file = bucket.file('path_to_image.jpg');

  return request(record.pictureUrl).pipe(file.createWriteStream({
    metadata: {
      contentType: 'image/jpeg',
    }
  }));
};

Спасибо всем за помощь !!

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