【问题标题】:How should I use the decodeuricomponent?我应该如何使用 decodeuri 组件?
【发布时间】:2020-06-11 20:47:49
【问题描述】:
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" })
    })
})

这是我现在得到的代码,网址是 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}%,但没有奏效...

【问题讨论】:

  • 不确定该日期格式,但我很确定 queryBuilder 回调需要 return 一些东西
  • @ChrisG 无需从这些回调中返回任何内容。

标签: javascript mysql node.js express knex.js


【解决方案1】:

看起来您正在尝试学习应该如何使用 express 和 knex 完成工作的真正基础知识,所以我认为最好在此处提供如何调试您的应用程序和 knex 代码的一般提示。

您可以通过打印出 req.query.fromreq.query.to 变量来开始调试,并查看 express 是否自动将解码 URL 参数应用于纯 JavaScript 字符串。

那么你应该在你的knex 查询中几乎不需要% 通配符,除非你使用like 运算符,其中%ABC% 也将匹配例如somthingABCABCsadpokq 和@987654329 @。

学习使用knex 编写查询的好方法是首先弄清楚/测试您要生成什么样的 SQL,然后使用查询生成器

.toSQL()

打印出您的knex 代码正在生成什么样的查询的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多