【问题标题】:Flutter cloud function call with parameters带参数的 Flutter 云函数调用
【发布时间】:2020-01-04 19:01:34
【问题描述】:

我有一个 Flutter 应用,我的代码如下所示:

  dynamic result = await CloudFunctions.instance.getHttpsCallable(functionName: 'getAllItemsAfterDatetime').call(
    <String, dynamic> {"datetime": "1563109861142"}
  );

还有一个 JS 文件:

exports.getAllItemsAfterDatetime= functions.https.onRequest(async (req, res) => {
  if (!mysqlPool) {
    mysqlPool = mysql.createPool(mysqlConfig);
  }

  let datetime = req.body.datetime;
  if (datetime == null) datetime = req.query.datetime;
  if (datetime == null) datetime = req.params.datetime;
  if (datetime == null) datetime = "3100000012120000";

  mysqlPool.query('SELECT * FROM items as res WHERE datetime > ' + datetime, (err, results) => {
    if (err) {
      console.error(err);
      res.status(500).send(err);
    } else {
      res.status(200).send({cnt: res.length, data: JSON.stringify(results)});
    }
  });

我总是得到“3100000012120000”,所以基本上我无法从 mobil 取回我的日期时间参数。它在浏览器中工作。如何在移动应用中执行此操作?

req.parameters 是正确的词还是什么?

谢谢

更新:解决方案

  //from browser
  let datetime = req.body.datetime; 

  //from mobile
  if (datetime == null) datetime = req.body.data.datetime; 

  //if not set
  if (datetime == null) datetime = "3100000012120000";

【问题讨论】:

  • 如果您知道返回值是固定长度的,您可以尝试使用正则表达式提取日期的每个部分。
  • 它应该是req.query.datetime,所以我看不出你的代码有什么问题。只需打印整个查询并检查。
  • 能否提供打印req.queryreq.body的输出?
  • 抱歉解决办法是://from browser let datetime = req.body.datetime; //来自手机 if (datetime == null) datetime = req.body.data.datetime; //如果没有设置 if (datetime == null) datetime = "3100000012120000";

标签: flutter google-cloud-functions


【解决方案1】:

解决方案是

 //from browser
  let datetime = req.body.datetime; 

  //from mobile
  if (datetime == null) datetime = req.body.data.datetime; 

  //if not set
  if (datetime == null) datetime = "3100000012120000";

【讨论】:

    猜你喜欢
    • 2019-07-29
    • 2020-11-12
    • 2021-01-24
    • 2021-08-29
    • 2019-12-17
    • 1970-01-01
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多