【问题标题】:Insert Multiple Rows with Knex and PG使用 Knex 和 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 来执行此操作吗?

提前致谢。

【问题讨论】:

    标签: javascript sql node.js knex.js pg


    【解决方案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);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      • 2016-07-14
      • 2016-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多