router.get("/stocks/authed/:symbol", function (req, res, next) {
req.db
.from("stocks")
.select("*")
.modify(function(queryBuilder) {
if (req.query.from && req.query.to) {
queryBuilder.whereBetween('timestamp',[`%${req.query.from}%`,`%${req.query.to}%`]);
}
})
.where("symbol", "=", req.params.symbol)
.then((rows) => {
res.json({ Error: false, Message: "Success", Cities: rows })
})
.catch((err) => {
console.log(err)
res.json({ Error: true, Message: "Error in MySQL query" })
})
})这是我现在得到的代码,url是http://localhost:3000/stocks/authed/AAL?from=2020-03-15T00%3A00%3A00.000Z&to=2020-03-20T00%3A00%3A00.000Z
为了允许中间人正确地读取url,我认为我需要使用decodeuricomponent对url进行解码。
我怎么发动汽车呢?我试着包围了%${req.query.from}%,%${req.query.to}%,但是没有效果...
发布于 2020-06-15 15:33:47
看起来你正在尝试学习如何使用express和knex来做一些事情的基础知识,所以我认为最好在这里给出如何调试你的应用程序和knex代码的一般技巧。
您可以通过打印输出这些req.query.from和req.query.to变量来开始调试,并查看express是否自动将解码URL参数应用于纯javascript字符串。
那么,您在knex查询中几乎不需要%通配符标记,除非您使用的是like运算符,其中%ABC%也将与somthingABC、ABCsadpokq和anything goes ABC yup % is a wildcard匹配。
学习使用knex编写查询的好方法是首先找出/测试您试图生成的SQL类型,然后使用查询构建器的
.toSQL()方法打印出您的knex代码正在生成的查询类型。
https://stackoverflow.com/questions/62333310
复制相似问题