2

我正在使用node.js制作一个应用程序,使用express框架,将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 已经在我的字符串的开始和结束引号之前放置了斜杠,所以我以编程方式插入到字符串中间的转义斜杠不起作用。

我怎样才能插入这样的值?请帮忙。

4

1 回答 1

-1

您也可以使用pg-escape模块来处理这种情况。这个模块还有其他一些有用的转义方法。

安装

npm install pg-escape

例子

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

控制台.log(sql);

于 2017-06-09T06:03:41.683 回答