nodejs使用WHERE查询postgres

lfapxunr  于 2023-05-06  发布在  Node.js
关注(0)|答案(1)|浏览(127)

我有nodejs与postgres数据库,我可以通过API运行查询。
如果我能用localhost:3000/data/ID# curl ,我就能得到数据。下面的代码正在工作。

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
$

任何帮助或指导我如何可以或应该格式化查询是非常感谢。
干杯

fkaflof6

fkaflof61#

所以修复,实际上是一个错字。问题是PEBCAK。密码在这里是正确的。但在我的申请中;还有别的。APP里是这样的。
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的呼吁。
实际的解决方法是确保您检查所有代码并捕获内容。

相关问题