如何在node-postgres的Queryconfiguration对象中用双引号声明一个string
我使用node.js使用Queryconfiguration对象来访问PostgreSQL表;
我想要build立'SELECT * FROM "Customers" WHERE "CustomersID" = 1'
是'SELECT * FROM "Customers" WHERE "CustomersID" = 1'
,它可以与数据库一起工作。
现在,这是我正在使用的查询对象;
const query = { text: 'SELECT * FROM $1 WHERE "CustomersID" = $2', values : ["Customers",1], }
但是我得到了“$ 1”错误或者接近“$ 1”的语法错误,我用“或/和”尝试了不同的方法,但是对我来说似乎没有用。
将$ 1声明为值数组中双引号的string的正确方法是什么?
感谢Gus
Parameterized Queries
/ Prepared Statements
在服务器端格式化,不允许使用列或表名的variables来对付SQL注入,虽然这是不必要的矫枉过正,但也是PostgreSQL服务器的限制。
单独的转义列/表名实际上足以防止SQL注入,但必须在您身边完成,而基本的驱动程序node-postgres
在其查询格式中不支持它。
作为一种select, pg-promise完全支持这一点:
db.query('SELECT * FROM $1:name WHERE "CustomersID" = $2', ['Customers', 1]); // OR: db.query('SELECT * FROM $1~ WHERE "CustomersID" = $2', ['Customers', 1]);
它使用自己的SQL名称表示法正确地转义列/表名称。 我们可以添加:name
或~
到variables来表示variables表示一个SQL名称,而不是一个常规值。
- 用Sequelizejs检索多行
- AWS Lambda上的节点function无法连接到具有node-pg的数据库
- 将嵌套的JSON从多个到多个从PostgreSQL连接到Node.js的表中返回
- ECONNFUSED在应用程序中进行GET请求时,API成功返回JSON
- 使用node-postgres将文件存储在postgres中
- 如何在用户浏览器上实现node-postgres?
- 将自定义types的数组传递给来自node-pg和SQL注入的postgres函数
- node-postgres:如何执行“WHERE col IN(<dynamic值列表>)”查询?
- 如何通过客户端库(Postgres)在SQL查询中传递元组(不是数组)作为WHERE约束参数?