我正试图从Firebase云函数获得响应,但唯一得到的是null。控制台输出显示fetch命令工作并输出正确的数据。
exports.create = functions.https.onCall((data, context) => {
fetch("https://mywebsite.com/x", {
method: "POST",
headers: {
"Authorization": "Bearer MyKey",
},
body: JSON.stringify({"myData":data.myData})
}).then(
function(response) {
if (response.status !== 200) {
console.log('Looks like there was a problem. Status Code: ' +
response.status);
return;
}
// Examine the text in the response
response.json().then(function(data) {
console.log(data);
});
return data.json();
}
)
.catch(function(err) {
console.log('Fetch Error :-S', err);
});
});
我试着使用Promise
,我试着将is作为json返回,就像return data
一样,似乎什么都不起作用。结果总是null
我在flutter应用程序中使用的代码是:
HttpsCallable callable =
FirebaseFunctions.instance.httpsCallable('create');
final response = await callable.call(<String, dynamic>{
'myData': 'data',
}).then((value) => print(value.data));
您没有从函数中的顶级代码返回任何内容,这意味着Cloud Functions在最终}
执行时终止容器,远远早于fetch
调用完成。
要同时允许fetch
调用完成和向调用方返回值,请确保从cde:的顶级调用return
exports.create = functions.https.onCall((data, context) => {
// 👇
return fetch("https://mywebsite.com/x", {
...