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

Posted

技术标签:

【中文标题】可调用云函数错误:响应缺少数据字段【英文标题】:Callable Cloud Function error: Response is missing data field 【发布时间】:2020-01-02 19:13:05 【问题描述】:

不知道如何在 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!");
 );

我的颤振代码

///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 函数异常 颤振:内部 颤振:响应缺少数据字段。 颤振:空

【问题讨论】:

您不能使用可调用函数 SDK 调用 HTTP 类型函数 (onRequest)。您将需要使用可调用类型函数 (onCall)。 firebase.google.com/docs/functions/callable 【参考方案1】:

使用

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 示例 here 和 here 的 Firebase 函数

【讨论】:

我使用 onCall 并在我的颤振代码中得到了响应 print("这是来自 firebase $resp 的响应");因此,这是来自 'HttpsCallableResult' 的 firebase 实例和 firebase 控制台 URL 响应:"error":"message":"Bad Request","status":"INVALID_ARGUMENT" @ParthBhanderi 我编辑了答案,向您展示了应该如何声明调用和响应。我相信你弄乱了调用参数,所以调用与你发布的函数不匹配。我希望它能解决你的问题 是的,我遇到了问题,我的 firebase 功能工作正常。谢谢你的帮助。

以上是关于可调用云函数错误:响应缺少数据字段的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Firebase 可调用云函数上引发错误?

在 Flutter 中返回 Null 的可调用云函数

firebase - 从可调用云函数访问数据库时应用检查失败

可调用云函数比 HTTP 函数更好吗?

使用 Firebase CLI shell 测试可调用的云函数

Firebase 可调用函数在 Android SDK 中不返回 JSON 响应