在node-postgres中使用字符串文字进行参数化查询

时间:2017-11-13 05:05:44

标签: node-postgres

我正在尝试编写一个node-postgres查询,该查询将一个整数用作区间中的参数作为参数:

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

当我运行它时,它会显示此错误消息,表明它没有看到$1,因为它用单引号括起来:

  

绑定消息提供1个参数,但预备语句“”需要0

是否有支持的方式来执行此操作?如果没有,最好的工作是什么?

1 个答案:

答案 0 :(得分:2)

我发现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]);