【发布时间】: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.query和req.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