node.js - 在 Flutter 中调用 Firebase 函数时出现 CloudFunctionsException
问题描述
我正在尝试从我的 Flutter 项目中调用 Firebase 函数。在我的 pubspec.yaml 文件中,我导入了函数 import: cloud_functions: ^0.4.0+2
。我还设置了所有 firebase 配置,因为我从我的应用程序与 firestore 数据库建立了有效连接。然后我在 javascript 中创建并部署了一个 Firebase 函数,如下所示:
exports.addEventToCalendar = functions.https.onRequest((request, response) =>
const eventData = {
eventName: request.body.eventName,
description: request.body.description,
startTime: request.body.startTime,
endTime: request.body.endTime
};
//more code using these variables
}
我已成功将此功能部署到 Firebase,并使用以下 JSON 数据在 Google Developer Console 中成功运行和测试:
{
"eventName": "Firebase Event",
"description": "This is a sample description",
"startTime": "2019-07-18T10:00:00",
"endTime": "2019-07-18T14:00:00"
}
所以我知道这个功能有效。
现在,当我尝试使用这种方法在我的 Flutter App 上调用它时:
void _addToCal() async {
try {
final HttpsCallable callable = CloudFunctions.instance.getHttpsCallable(
functionName: 'addEventToCalendar',
);
dynamic resp = await callable.call(<String, dynamic>{
"eventName": "Flutter Event",
"description": "This is a sample description",
"startTime": "2019-07-15T10:00:00",
"endTime": "2019-07-15T14:00:00"
});
} catch (e, s) {
print(e);
print(s);
}
}
我收到“CloudFunctionsException”错误的实例。
在 Firebase 方面,我查看了函数的日志并看到了几个错误,包括:TypeError: Cannot read property 'data' of undefined
.
感谢您的帮助,因为我是 Firebase 和 Cloud Functions 的新手。
解决方案
您正在从 Flutter 代码中调用一个可调用函数,但您在 index.js 中声明了一个常规的 HTTPS 触发函数。Callable Cloud Functions 的声明如下所示:
exports.addMessage = functions.https.onCall((data, context) => { // ... });
推荐阅读
- c++ - Codewars UndefinedBehaviorSanitizer:DEADLYSIGNAL
- react-native - Expo / React Native:弹出到裸工作流后找不到图像文件
- python - 试图结束while循环Python
- javascript - 如何枚举分配给类型的选项?
- java - java spring boot,如何编写测试来检查发送请求
- python - 为热图按正确顺序排列的数据透视表
- java - 无明显原因出现在 ArrayList 中的 Null 元素
- c# - 为具有策略模式的事件实现两个通知系统
- javascript - 如何将服务器中间件添加到我自己的 Nuxt 模块?
- mysql - MySQL 错误代码 1055 与 group by/average