Firebase云函数:调用可调用函数时无法提取参数

时间:2020-10-06 14:09:35

标签: javascript firebase flutter google-cloud-functions

我正在使用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)
  })
});

1 个答案:

答案 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
});