如何在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名称,而不是一个常规值。