【发布时间】:2018-10-28 21:18:58
【问题描述】:
在 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 的值:
- fileRef 包含来自 Firebase 存储的现有文件。
- FileName 与 fileRef 表示的文件的名称匹配。
- 大小与由 fileRef 表示的文件的大小相匹配。
- UploadDate 与 fileRef 表示的文件的创建日期匹配。
- DownloadURL 包含由 fileRef 表示的文件的下载链接。
从 Firebase 云功能执行此操作的合适方法是什么?
【问题讨论】:
-
不要从您的应用程序调用 Cloud Functions,而是直接从存储写入触发它。有关可用数据的示例,请参阅此页面:firebase.google.com/docs/storage/extend-with-functions
-
但是如何从云函数中获取元数据?
-
啊,我明白了。您的
saveFileData写入云函数,然后写入实时数据库。这意味着您需要从 Cloud Function 中的实时数据库中读取它。您将为此使用 Firebase Admin SDK,如下所示:stackoverflow.com/questions/43650472/… 和此处:stackoverflow.com/questions/43913139/…
标签: validation firebase google-cloud-storage google-cloud-functions