После загрузки файла в хранилище Firebase я хочу вызвать облачную функцию firebase из своего веб-приложения, которая будет проверять данные файла, которые я ему отправил, а затем сохранять их в базе данных в реальном времени.
Я вызываю функцию, используя следующий код:
var fileRef = 'Files/' + user.uid + '/' + fileId + '/' + file.name;
var storage = firebase.storage().ref(fileRef);
//Upload the file
//..................
// After uploading the file
storage.getMetadata().then(function(metadata) {
var date = metadata.timeCreated.toString();
var storage = firebase.storage().ref('Files/' + user.uid + '/' + fileId + '/' + file.name);
storage.getDownloadURL().then(function(url){
var saveFileData = functions.httpsCallable('saveFileData');
saveFileData({
fileId: fileId,
fileRef: fileRef,
fileData: {
Uploader: user.uid,
Title: title,
FileName: file.name,
Size: fileSize,
DownloadURL: url,
UploadDate: date,
}
}).then(function(){
// Do something
});
});
});
Я хочу проверить значения FileName, Size, DownloadURL и UploadDate в облачной функции на основе следующих условий:
Каким будет подходящий способ сделать это с помощью облачной функции Firebase?
Но как мне получить метаданные из облачной функции?
Ах я вижу. Ваш saveFileData записывает в облачную функцию, которая затем записывает в базу данных в реальном времени. Это означает, что вам нужно будет прочитать его из базы данных в реальном времени в вашей облачной функции. Для этого вы будете использовать Firebase Admin SDK, как показано здесь: stackoverflow.com/questions/43650472/… и здесь: stackoverflow.com/questions/43913139/…



Вы можете использовать триггеры хранилища, развертывание в облачных функциях Firebase,
В объекте вы получите все метаданные для загруженного файла, например, здесь
exports.generateMetaForUpload = functions.storage
.object()
.onFinalize(object => {
console.info(object);
//do whatever you need to verify
});
Вместо того, чтобы вызывать облачные функции из вашего приложения, запускайте их прямо из записи в хранилище. См. На этой странице примеры доступных данных: firebase.google.com/docs/storage/extend-with-functions