mysql - 如何使用 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?请帮忙 ..!
解决方案
您没有正确定义 sequelize 关联。您正在尝试关联表awg
,harnes_detial
但 ORM 生成的查询说它harnes_detial
与get_awgs
.
另一个观察结果是您希望 ORM 自动在表中生成getAwgId
列,harness_detial
但 ORM 希望您事先拥有一个数据库列。您可以映射外键和目标键。
我建议您关注sequelize 的官方文档和此博客,以了解有关如何定义 sequelize 关联的更多信息。
希望能帮助到你!
推荐阅读
- c# - 在 fullcalendar.js 中从服务器获取事件数据
- sql-server - SQL Server 存储过程需要 0.1 秒才能执行,但 Rest api 需要 60 秒。为什么?
- c - 为什么我的程序返回(空)和乱码而不是预期输出
- python-3.x - Python virtualenv 无法设置!苹果系统
- python - Python:x[i,:] 和 x[i][:] 之间有什么区别吗?
- r - 标记器使用 ggplot2 删除了科学记数法
- node.js - 如何从 Node 或 Express 设置标签的内容?
- node.js - Cordova 无法安装
- linux - 找不到命令 - 脚本编写腻子错误?
- python-3.x - 重复状态之间的时间差