用户在聊天客户端(网站)中输入消息。此消息将发送到在Firebase上设置的云功能。然后,云功能查询返回响应的第三方API。该响应需要发送回客户端进行显示。
所以基本上我的客户像这样调用云功能...
var submitMessage = firebase.functions().httpsCallable('submitMessage');
submitMessage({message: userMessage}).thenfunction(result) {
//Process result
});
Run Code Online (Sandbox Code Playgroud)
我的云功能看起来像这样...
exports.submitMessage = functions.https.onCall((data, context) => {
request({
url: URL,
method: "POST",
json: true,
body: queryJSON //A json variable I've built previously
}, function (error, response, body) {
//Processes the result (which is in the body of the return)
});
return {response: "Test return"};
});
Run Code Online (Sandbox Code Playgroud)
我已经包含了请求包,并且API调用本身可以完美运行。我可以从请求的返回函数中将结果打印到控制台。但是,显然因为请求是异步的,所以我不能只创建一个全局变量并将结果主体分配给它。我已经看到,请求完成后就可以调用回调函数。但是,我需要以某种方式将其传递给云函数的返回值。简而言之,我需要这样做...
exports.submitMessage = functions.https.onCall((data, context) => {
var gBody;
request({
url: URL,
method: "POST",
json: true,
body: queryJSON //A json variable I've built …Run Code Online (Sandbox Code Playgroud)