nodejs 使用 WHERE 查询 postgres"/>
nodejs 使用 WHERE 查询 postgres
我有一个带有 postgres 数据库的 nodejs,我可以通过 API 运行查询。
如果我可以使用 localhost:3000/data/ID# 进行卷曲并且我可以取回数据。下面的代码正在运行。
const getDataById = (request, response) => {
const id = parseInt(request.params.id)
pool.query('SELECT * FROM data WHERE id = $1', [id], (error, results) => {
if (error) {
throw error
}
response.status(200).json(results.rows)
})
}
以下是 ID# 正常工作的 curl 示例。
$ curl localhost:3000/data/2
{"id":2,"city":"dallas","data":{"user":"tim","position":"clerk"}}
我需要做同样的事情,但使用城市名称作为我的参数。
我需要能够执行相同的操作,但使用 ID# 以外的列值进行查询。例如在数据库中我可以运行
data=> SELECT * FROM data WHERE city = 'dallas';
和我的结果是一样的:
{"id":2,"city":"dallas","data":{"user":"tim","position":"clerk"}}
我试过使用下面的方法,但我对结果一无所知:
const getDataCity = (request, response) => {
const city = (request.params.city)
pool.query('SELECT * FROM data WHERE city = $1',[city], (error, results) => {
if (error) {
throw error
}
response.status(200).json(results.rows)
})
}
$ curl localhost:3000/data/dallas
$
非常感谢任何关于我可以或应该如何格式化查询的帮助或指导。
干杯
回答如下:所以修复实际上是一个错字。问题是 PEBCAK。这里的代码是正确的。但是在我的申请中;我还有别的事。这是应用程序中的以下内容。
response.status(200).json(results.row)
所以我把它改成了
(results.rows)
就像它本来应该的那样,神奇的事情现在起作用了:)
const getDataCity = (request, response) => {
const city = (request.params.city)
pool.query('SELECT * FROM data WHERE city = $1',[city], (error, results) => {
if (error) {
console.log('error:', error)
}
response.status(200).json(results.rows)
})
}
$ curl localhost:3000/data/dallas
$ {"id":2,"city":"dallas","data":{"user":"tim","position":"clerk"}}
我也确实停止抛出错误并记录了它;因为这是很好的做法,感谢@Bergi 的呼吁。
实际的修复是确保你检查所有代码并抓住问题。
更多推荐
nodejs 使用 WHERE 查询 postgres
发布评论