В настоящее время я сохраняю изображения в виде URL-адресов в моей базе данных Firebase, однако мне нужно преобразовать их в сохраненные изображения в корзине Firebase. Я беру URL-адрес, сохраняю его в хранилище firebase и затем заменяю узел изображения новым URL-адресом ссылки на хранилище firebase, который затем можно поместить в тег img.
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
const bucket = admin.storage().bucket();
const request = require('request');
exports.saveToStorage = functions.database.ref(`/events/{eventID}`)
.onCreate(snapshot => {
const firebaseUrl = `https://firebasestorage.googleapis.com/v0/b/${FIREBASE_ID}.appspot.com/o/`;
const filePath = snapshot.val().image;
const fileKey = snapshot.key;
const filename = filePath.split('/').pop();
const firebasePath = firebaseUrl+filename;
const remoteWriteStream = bucket.file(filename).createWriteStream({
metadata: { contentType: 'image/jpeg' }
});
request(filePath).pipe(remoteWriteStream)
.on('error', (err) => console.log(err))
.on('finish', () => {
console.log("Image saved successfully");
//replace old image with new image path saved in firebase storage
return snapshot.ref.parent.child(fileKey+'/image').set(firebasePath);
});
});
В настоящее время проблема заключается в том, что все работает, но полученная ссылка не имеет аутентификации, и изображение не отображается по ссылке, полученной этим методом.
Можно ли это сделать таким образом, или мне нужно преобразовать изображение в двоичные данные из URL-адреса, а затем загрузить его в базу данных Firebase?