javascript - 使用 Knex 和 PG 插入多行

标签 javascript sql node.js knex.js pg

我这里遇到了一些问题。我有一个数组,我需要插入或更新数据库中的记录。

我得到了这个包含两个字段的测试表:IDTEAM

这是我的代码:

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 来做到这一点吗?

提前致谢。

最佳答案

我想你可能会尝试做这样的事情:

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);
});

关于javascript - 使用 Knex 和 PG 插入多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59309491/

相关文章:

javascript - 无需单击清除按钮即可清除过滤

java - 无法在 Java、JPA 中执行 DELETE

javascript - GET 请求到不同的 HTML 页面

linux - 在 Node.JS 中引用相对于应用程序根目录的文件的正确方法

javascript - 计算我的网页的点击次数

javascript - 如何使用元素上的指针事件禁用整个页面的滚动?

javascript - 如何在 javascript 中运行 python 脚本并刷新 django 中的 View

mysql左连接列重组

登录 Asp.Net MVC 上的 Sql 错误用户 ID、角色 ID 无效列名

c# - 通过 ActiveX 控件在 JavaScript 中启动应用程序时转义路径