我正在使用Flutter SDK调用云函数。我添加了一个参数someField
,但在云端,它无法检索,并且始终为undefined
。这就是我所谓的云功能
static Future<void> doSomething() async {
await Firebase.initializeApp();
final HttpsCallable callable = CloudFunctions.instance.getHttpsCallable(
functionName: 'myFunction',
);
dynamic resp = await callable.call(
<String, dynamic>{
'someField': 'Hurray!',
},
);
}
云函数编写如下
exports.myFunction = functions.https.onRequest((req, res) => {
cors(req, res, () => {
const myParameter = req.body.someField; // is always Undefined
// also tried
// req.query.someField
// req.params.someField
doSomething(myParamter)
})
});
答案 0 :(得分:2)
您正在将客户端应用上的callable functions与后端上的HTTPS functions混在一起。请查看文档以了解它们之间的区别。如果要在客户端上使用Firebase SDK来调用Cloud Functions,则应使用onCall
而不是onRequest
进行声明。当您使用onCall
编写可调用函数时,可以通过传递给回调的第一个参数访问输入参数。
exports.myFunction = functions.https.onCall((data, context) => {
// data.someField should be populated from your client request
});