【问题标题】:Nodejs postgres pg syntax errorNodejs postgres pg语法错误
【发布时间】:2018-08-21 23:22:06
【问题描述】:

正如标题所说,我在使用 node-postgres 时遇到了语法错误。这是代码的样子

const {Pool, Client} = require('pg')
const pool = new Pool({
  user: '<user>',
  host: '<host>',
  database: '<database>',
  password: '<pw>',
  port: <port>
})

let query = `SELECT * FROM user JOIN notifications ON user.user_id = notifications.user_id WHERE user_id=$1`

let values = ["123"]

pool.query(query, values)
  .then(() => { /* do something */} )
  .catch((err) => { console.log(err)} )

根据这个查询,我收到一条带有语法错误的消息

syntax error at or near "."

由于相同的查询在 pgAdmin 中运行良好,我猜测它是特定于模块的,但我还没有弄清楚问题出在哪里。

非常感谢任何帮助!

编辑:添加缺少的括号,感谢 Sreeragh A R

【问题讨论】:

  • 对我来说它正在工作..
  • 最后一行缺少括号。将其更改为 .catch((err) => { console.log(err)} )
  • @SreeraghAR 谢谢,已修复。但是,这是一个错误,因为它是一个最小的例子。原始代码中的括号是正确的。

标签: node.js postgresql node-postgres


【解决方案1】:

user 是 postgresql 中的保留字,您必须使用双引号转义 user

let query = `SELECT * FROM "user" JOIN notifications ON "user".user_id = notifications.user_id WHERE "user".user_id=$1`

【讨论】:

  • 啊,我明白了。从来不知道这个。
  • 干杯!这解决了最初的问题。但是,现在我收到一条不同的错误消息error: column reference "user_id" is ambiguous。这是由于我的表格设置还是postgres特定的东西?编辑:没关系,将“user”.user_id 添加到 WHERE 语句并修复它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 2014-01-29
  • 2018-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多