【发布时间】:2017-12-20 15:02:25
【问题描述】:
我正在使用 Postgres、NodeJS 和 Knex。
我有以下情况:
- 具有唯一字段的数据库表。
-
在 NodeJS 中,我有一个对象数组,我需要:
一个。如果表不包含唯一id,则插入新行,或者
b.如果表确实包含唯一 ID,则更新其余字段。
据我所知,我有三个选择:
- 执行查询以检查每个数据库中是否存在,并根据响应执行更新或插入。这会消耗资源,因为每个数组项都需要调用,而且还有插入或更新。
- 删除数组中所有具有 id 的行,然后执行插入。这意味着只有 2 次操作,但自动增量字段将继续增长。
- 执行 upsert,因为 Postgres 9.5 支持它。批量 upsert 似乎有效,并且只调用了数据库。
查看我知道的选项,upsert 似乎是最合理的选项,但它有什么缺点吗?
【问题讨论】:
标签: node.js postgresql knex.js