【问题标题】:Parameterized query with string literal in node-postgres在 node-postgres 中使用字符串文字的参数化查询
【发布时间】:2017-11-13 15:43:29
【问题描述】:

我正在尝试编写一个 node-postgres 查询,它接受一个整数作为参数在区间中使用:

  const query = {
    text:
      `SELECT
        foo 
        FROM bar 
        WHERE 
          DATE(created_at) >= DATE(NOW()) - INTERVAL '$1 DAYS';`,
    values: [daysAgo]
  }

当我运行它时,它给出了这个错误消息,表明它没有看到$1,因为它用单引号引起来:

绑定消息提供1个参数,但prepared statement“”需要0个

是否有支持的方式来执行此操作?如果不是,最好的解决方法是什么?

【问题讨论】:

    标签: node-postgres


    【解决方案1】:

    我发现this reference 表明您可以使用'1 DAY' * X 的约定。

    因此我能够得到这个工作:

       (async () => {
           const { rows } = await pgpool.query(`
              SELECT id, name FROM users 
               WHERE DATE(created) <= DATE(NOW()) - INTERVAL '1 DAY' * $1;`,
               [req.params.daysAgo]);
    

    【讨论】:

    • @alexroussos,如果您需要查看使用 catch() 等的完整调用,请告诉我,我将编辑我的答案。
    • 太完美了。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多