Javascript 节点js应用程序内Postgres查询中的转义单引号

Javascript 节点js应用程序内Postgres查询中的转义单引号,javascript,node.js,postgresql,predix,Javascript,Node.js,Postgresql,Predix,下面是我的节点js代码中的一行: var qry = 'INSERT INTO "sma"."RMD"("UserId","Favourite") VALUES (' + req.body.user + ',' + JSON.stringify(req.body.favourite) + ')' 我想在JSON.stringify(req.body.favorite)之前插入单引号。但我无法逃避单引号。我无法调试该问题,因为我正在将代码上载到predix云服务器 你知道如何做到这一点吗?为什

下面是我的节点js代码中的一行:

var qry = 'INSERT INTO "sma"."RMD"("UserId","Favourite")  VALUES (' + req.body.user + ',' + JSON.stringify(req.body.favourite) + ')'
我想在JSON.stringify(req.body.favorite)之前插入单引号。但我无法逃避单引号。我无法调试该问题,因为我正在将代码上载到predix云服务器
你知道如何做到这一点吗?

为什么不使用事先准备好的语句

var qry = 'INSERT INTO "sma"."RMD"("UserId","Favourite")  VALUES ($1, $2)';
client.query(qry, [ req.body.user, JSON.stringify(req.body.favourite])'

您还可以使用模板文本来构建查询

使用回勾字符的模板文本


模板文本提供了一个干净的语法:变量插值、多行字符串等等。

为了。。。。使用参数化查询!!!!!!!!!!!!!!不要像在问题中那样编写代码来组装查询。你很容易受到伤害。你永远不应该这样做!作为查询格式的一部分,让数据库库正确转义这些值。该问题是合法的。在某些情况下可能需要它,例如获取时间间隔“1天”。这应该是所问问题的公认答案。虽然OP对查询进行字符串格式化是错误的,但仍有一些情况需要在查询中转义引号,例如使用时间间隔“1天”
alert(`Use "double" and 'single' quotes in the same string`);
alert(`The escape the \` back-tick character in a string`);