可按如下方式插入单行:
client.query("insert into tableName (name, email) values ($1, $2) ", ['john', 'john@gmail.com'], callBack)
此方法会自动注解掉任何特殊字符。
如何一次插入多行?
我需要实现这一点:
"insert into tableName (name, email) values ('john', 'john@gmail.com'), ('jane', 'jane@gmail.com')"
我可以只使用js字符串操作符来手动编译这样的行,但随后我需要添加特殊字符escape。
7条答案
按热度按时间mnemlml81#
如下所示使用pg-format。
2mbi3lxu2#
另一种使用PostgreSQL json函数的方法:
vs91vp4v3#
本文之后:pg-promise库中的Performance Boost,以及它的建议方法:
使用它的一个例子,完全在你的情况:
它还可以处理对象数组:
更新-1
有关通过单个
INSERT
查询实现高性能的方法,请参见Multi-row insert with pg-promise。更新-2
这里的信息现在已经很旧了,请参阅自定义类型格式的最新语法。以前的
_rawDBType
现在是rawType
,formatDBType
被重命名为toPostgres
。wgx48brx4#
您必须动态地生成查询。虽然这是可能的,但这是有风险的,如果您做错了,很容易导致SQL注入漏洞。也很容易在查询中的参数索引和传入的参数之间出现一个错误。
也就是说,下面是一个如何编写的示例,假设您有一个类似
{name: string, email: string}
的用户数组:另一种方法是使用
@databases/pg
(我写的)这样的库:@databases要求查询用
sql
标记,并使用它来确保传递的任何用户数据总是被自动转义。这还允许您内联地编写参数,我认为这会使代码更具可读性。ih99xse15#
使用npm模块postgres(porsager/postgres),其核心具有标记的模板字符串:
https://github.com/porsager/postgres#multiple-inserts-in-one-query
只是想我会张贴,因为它就像一个全新的测试版,我发现它是一个更好的SQL库的哲学。我认为将优于其他postgres/节点库张贴在其他答案。恕我直言
4si2a6ki6#
嗨,我知道我参加聚会迟到了,但对我起作用的是一张简单的Map。
我希望这将有助于寻求相同的人
xkrw2x1b7#
没有帮助?此外,您还可以手动生成查询字符串:
如果您阅读这里的https://github.com/brianc/node-postgres/issues/530,您可以看到相同的实现。