【发布时间】:2021-07-17 22:46:18
【问题描述】:
我目前正在使用带有 Firebase Javascript SDK 的 ReactJs 前端。它在后端使用 NodeJS 连接到 firebase-functions 存储模拟器。
通常我可以从我的前端调用一个functions.https.onCall(...)云函数(已经用nodejs设置)并收到一个promise,然后我可以正常使用前端的数据。
但是,在后端使用functions.storage.object().onFinalize(...),我试图强制某种方式在成功处理文件后向我的前端返回成功消息。
这是我尝试过的:
我的后端代码(Nodejs):
exports.processMedia = functions.storage.object().onFinalize(async (object) =>{
// Here I successfully process any uploaded images
// Issue - After the media has been processed, I'd like to return a message that can be used to update the UI. I've tried to return a new promise like so:
return new Promise((resolve, reject) =>{
return resolve("Success");
});
})
然后在我的 React UI 中,我尝试使用 httpsCallable('processMedia') 函数从后端捕获返回消息,因为我不知道如何尝试获取响应。
async processMedia(){
const processMediaCallable = this.functions.httpsCallable('processMedia');
return processMediaCallable;
}
然后我尝试从 promise 中注销值:
async function getProcessedMessage(){
await firebase.processMedia().then((val) => {
console.log(val);
});
}
在我在 UI 中上传文件并且后端中的 processMedia() 已完成后,我在浏览器控制台中获得了 val 的此输出:
ƒ (data) {
return _this.call(name, data, options || {});
}
我正在尝试在此处输出成功消息。任何想法将不胜感激。谢谢。
【问题讨论】:
-
您好,如果我的回答对您有帮助,您可以接受/投票,否则请随时提出进一步的问题。 What should I do when someone answers?
标签: javascript node.js firebase google-cloud-functions google-cloud-storage