使用 Knex 和 PG 插入多行
Posted
技术标签:
【中文标题】使用 Knex 和 PG 插入多行【英文标题】:Insert Multiple Rows with Knex and PG 【发布时间】:2019-12-12 17:01:24 【问题描述】:我在这里遇到了一些问题。我有一个数组,我需要在我的数据库中插入或更新记录。
我得到了这个包含两个字段的测试表:ID 和 TEAM。
这是我的代码:
var idPlayer = []
query('tb_teste').select('id')
.then((row) =>
for(var i = 0; i < row.length; i++)
idPlayer[i] = row[i].id
// just put this here for test purposes. I have 360+ PlayerIDs.
var pArray = [ PlayerID: 201980, TeamID: 1610612761 ,
PlayerID: 202691, TeamID: 1610612744 ]
for(var x = 0; x < pArray.length; x++)
if(idPlayer.includes(pArray[x].PlayerID))
console.log('Está na listagem', pArray[x].PlayerID)
// will do the update later
else
console.log('Não está na lista', pArray[x].PlayerID)
return query('tb_teste').insert(
id: pArray[x].PlayerID,
team: pArray[x].TeamID
)
)
我的表现在是空的,但是我不能插入那两条记录,只有第一条插入到最后。无论如何,我可以一次插入这些记录?我真的需要使用 for 来执行此操作吗?
提前致谢。
【问题讨论】:
【参考方案1】:我想你可能正在尝试做这样的事情:
const pArray = [ PlayerID: 201980, TeamID: 1610612761 ,
PlayerID: 202691, TeamID: 1610612744 ];
query('tb_teste').then(rows =>
console.log('all rows in table before:', rows);
return query('tb_teste').insert(pArray).returning('*');
).then(rows =>
console.log('Inserted rows:', rows);
return query('tb_teste');
).then(rows =>
console.log('all rows in table after:', rows);
);
【讨论】:
以上是关于使用 Knex 和 PG 插入多行的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 node-postgres 将多行正确插入 PG?
如何使用 knex 使用“Insert ... ON DUPLICATE KEY UPDATE”添加多行