firebase 可调用云函数错误:响应缺少数据字段

8fq7wneg  于 2022-11-17  发布在  其他
关注(0)|答案(3)|浏览(147)

不知道如何从Flutter中的云函数获得响应。
我的云功能

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

exports.testDemo = functions.https.onRequest((request, response) => {
  return response.status(200).json({msg:"Hello from Firebase!"});
 });

我的Flutter代码

///Getting an instance of the callable function:
    try {
      final HttpsCallable callable = CloudFunctions.instance.getHttpsCallable(
        functionName: 'testDemo',);

      ///Calling the function with parameters:
      dynamic resp = await callable.call();
      print("this is responce from firebase $resp");

    } on CloudFunctionsException catch (e) {
      print('caught firebase functions exception');
      print(e.code);
      print(e.message);
      print(e.details);
    } catch (e) {
      print('caught generic exception');
      print(e);
    }

flutter:捕获firebase函数异常flutter:内部扑动:响应缺少数据字段。flutter:零值

zu0ti5jz

zu0ti5jz1#

用途

exports.testDemo = functions.https.onCall((data, context) => {
  return {msg:"Hello from Firebase!"};
});

在云端函式中。Callable与Request不同
调用函数时,需要添加参数:
更改:

// Calling a function without parameters is a different function!
  dynamic resp = await callable.call();

至:

dynamic resp = await callable.call(
     <String, dynamic>{
       'YOUR_PARAMETER_NAME': 'YOUR_PARAMETER_VALUE',
     },
);

如所述here
然后打印响应:

print(resp.data)
print(resp.data['msg'])

Flutter示例herehere的Firebase函数

3htmauhk

3htmauhk2#

必须显式地将属性“data”放在响应的json中。
比如:

response.send({
"status" : success,
"data" : "some... data"
});
fafcakar

fafcakar3#

如果要按函数名称调用函数,可以转换为.onCall类型函数。aldobaie's answer
或者对于onRequest类型函数:
我们需要将其作为RESTfulAPI来调用。
在部署到firebase时,我们将获取函数URL
或者我们可以从Firebase函数 Jmeter 板中获取函数URL。

URL格式为:
请< projectName >访问cloudfunctions.net/< functionName >
将它用作API优点是响应中的数据字段不是强制的,响应格式是自由的。

相关问题