首页 > 解决方案 > 如何使用 sequelize 连接上传数据的两个表?

问题描述

我有两个包含现有数据的表,我试图将它们与上传时的续集相关联,

其中表一(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})获得字段名称但这样将有一个空表并且我无法加入两个表以获得结果,就好像我上传数据一样我不会通过 sequelize 获得创建的字段。如果我手动操作,它会起作用......自动化过程会是什么。

我想拥有

表二(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

如何在上传表 2 数据时使用现有数据更新此 awgId?请帮忙 ..!

标签: mysqlnode.jssequelize.js

解决方案


您没有正确定义 sequelize 关联。您正在尝试关联表awgharnes_detial但 ORM 生成的查询说它harnes_detialget_awgs.

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

我建议您关注sequelize 的官方文档博客,以了解有关如何定义 sequelize 关联的更多信息。

希望能帮助到你!


推荐阅读