我正在设置我的第一个 REST API 来查询我设置的 Postgres 数据库。我有两种 CRUD 方法,当前可以分别查询表中的所有行和 ID = some 的行。
当请求参数是字符串时尝试查询时,出现了我遇到的问题。这是我收到的错误:
error: invalid input syntax for type integer: "NaN"
以下是我设置 GET 路由和端点 URL 的方法:
const getShowByTitle = (request, response) => {
const title = request.params.title
pool.query('SELECT * FROM show WHERE title = $1', [title], (error, results) => {
if (error) {
throw error
}
response.status(200).json(results.rows)
})
}
app.get('/show/:title', getShowByTitle)
预期结果是使用节目标题作为参数(字符串)发送 GET 请求会返回该节目的 JSON 响应。
任何有用资源的帮助或指导将不胜感激。谢谢。
最佳答案
这里有一些问题,首先在 SQL 中表的名称应该是复数形式“shows”,其次你要进行不带引号的选择,你需要类似的东西:
"SELECT * FROM show WHERE title = '$1'"
第三,由于用户可以使用大写和小写,因此您需要一种更强大的方式来使用 LIKE、ILIKE 和 ~、~* 运算符来搜索文本。
https://www.2ndquadrant.com/en/blog/text-search-strategies-in-postgresql/
第四,也是更重要的一点,您没有过滤字符串,并且面临 SQL 注入(inject)的风险,因为“UPDATE admins SET password='newsom22th88';”将在您的数据库中执行。
关于node.js - PostgreSQL REST API Node.js CRUD - 字符串查询参数给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59991482/