node.js - PostgreSQL REST API Node.js CRUD - 字符串查询参数给出错误

标签 node.js postgresql rest crud

我正在设置我的第一个 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/

相关文章:

node.js - 如何使用docker将应用程序发布到heroku?

javascript - JavaScript 代码中的 EJS 标签

postgresql - 如何在 PostGIS/PostgreSQL 中选择排名最高的几何体?

javascript - 如何将 POST 请求中的数据保存为变量,以便在 GET 请求中使用?

node.js - 蒙戈 : Storing user-specific data for a document

angularjs - Angular 套接字 io 未定义

ruby-on-rails - 如何使用 PostgreSQL 触发器?

c# - C# 和 PostgreSQL 中已有太多客户端

c# - 带有 ASP.NET 的 Entity Framework 为一对多集合返回 null

java - ContainerRequestFilter JBoss AS 7.1.1 RestEasy 3.0.6.Final