nodejs的Postgresql查询问题

时间:2013-05-31 11:43:11

标签: node.js node-postgres

我正在使用 express.js 制作应用,使用快速框架, postgresql 作为我的数据库。

我必须在我的数据库中插入一些值,其中一些值有引号。例如托尼的海鲜餐厅。我无法插入这样的值。

我试过

name.replace('\'', '\\\'');

以及

name.replace("'", "\'");

但没有成功。

问题是postgresql服务器在运行它们之前格式化查询。如果查询在我的代码中看起来像这样,

insert into venues values (nextval('venue_venueid_seq'),'"+name+"','"+api+"','"+location+"','"+latitude+"','"+longitude+"','"+category+"','"+category_generalized+"')

然后postgresql格式化它(我通过打印client.query对象找到它)

insert into venues values (nextval(\'venue_venueid_seq\'),\'Tony\'s Seafood Restaurant\',\'Google Places\',\'18863 California 1, Marshall\',\'38.146777\',\'-122.882987\',\'restaurant,food,establishment\',\'Eatery,Eatery,establishment\')

你看到postgresql已经在我的字符串的开头和结尾引号之前放置了斜杠,所以我以编程方式插入字符串中间的转义斜杠不起作用。

如何插入这样的值?请帮忙。

1 个答案:

答案 0 :(得分:-1)

您还可以使用pg-escape模块来处理此案例。该模块还有一些其他可用的转义方法。

<强>安装

npm install pg-escape

示例

var sql = escape('INSERT INTO%I VALUES(%L)','books',“O'Reilly”);

的console.log(SQL);