Upsert是复制的enteries,我该如何防止这种情况?

时间:2018-06-12 19:00:14

标签: javascript duplicates sequelize.js upsert postgresql-9.5

我正在尝试将来自不同表的组合的查询结果插入到新应用模块的中央表中。

models.sequelize.query(
    `
      SELECT...FROM...WHERE...
  `,
    {
      type: models.sequelize.QueryTypes.SELECT
    }
  )        
.then(function(results) {
          _.each(results, function (result) {
              promises.push(models.tableName.upsert(
              {
                id: result.id,
                poisitionId: result.positionId,
                column3: result.column3,
                column4: result.column4,
                column5: result.column5,
                column6: result.column6,
                column7: result.column7,
                column8: result.column8,
                column9: result.column9
              }, {
                conflict: {
                  target: 'id'
                }
              }

据我所知,问题是我没有正确实现代码的冲突目标部分。

我希望该函数只插入从其他表中提取的新数据行。否则,只有在进行任何更改后才应更新数据行,并使用positionId作为冲突目标ID。

1 个答案:

答案 0 :(得分:0)

似乎解决方案是在数据库中向我要插入的特定表添加唯一约束。

我正在使用pgAdmin,因此添加唯一约束非常容易。