我有两个具有现有数据的表,我正在尝试将它们与上传时的续集相关联,

表一(get_awgs)的位置:

id| awg | area |


表二(harnes_detial)将被上传:

id| gauge | description | price


我通过以下方式将它们关联起来:

 Harness.belongsTo(Awg,{constraints: false, foregineKey:'getAwgId'});
 Awg.hasMany(Harness);


我有一个由foreignKey更新的查询

PRIMARY KEY (id), FOREIGN KEY (getAwgId) REFERENCES get_awgs (id)
    ON DELETE SET NULL
    ON UPDATE CASCADE)
ENGINE=InnoDB;


当我路由模型时

router.get("/mergeTable/:awg", (req, res)=>{
  var awg = req.params.awg;
  Harness.findAll({where: {gauge: awg}, include:[{model: Awg}]}).then(resutls =>{
  res.send(JSON.stringify(resutls));
  }).catch(err=>{
    console.log(err);
  });
});


它说:SQL消息:““字段列表”中的未知列“ harnes_detial.getAwgId””,
当我.sync({force: true})时,我得到了字段名,但是这将是一个空表,并且我无法联接两个表来获得结果,就好像我上载数据时,我将不会通过续集来创建字段。如果我手动执行它会起作用...这将是自动化过程。

我想拥有

表二(harnes_detial)具有:

id| gauge | description | price | getAwgId
1    20       xyz          30      1
2    30       xyz          20      2
3    40       xyz          50      3
4    20       xyz          60      1


我如何在上载表两个数据时使用现有数据更新此awgId?请帮忙 ..!

最佳答案

您尚未正确定义序列化关联。您试图将表awgharnes_detial关联,但是ORM生成的查询表明它正在将harnes_detialget_awgs关联。

另一个观察结果是您希望ORM自动在getAwgId表中生成harness_detial列,但是ORM希望您事先拥有一个数据库列。您可以映射外键和目标键。

我建议您关注official documentation of sequelizethis博客,以了解有关如何定义序列关联的更多信息。

希望能帮助到你!

07-24 16:42
查看更多