请教下mysql的驱动Sequelize的关联表问题,设置过表关系的模型,操作时提示表模型没有关系。
我不管我最帅,我是你们的小可爱Sequelize
问题描述: 我在单独创建sequelize的模型时。使用了Model.associate方法, ps:我的sequelize是4.x.x版本。 然后在编写逻辑的时候使用Model.findAll()时我配置了options的include 对象。 cmd提示如下:
// SequelizeEagerLoadingError: room is not associated to cabinet!
从早上9:0 – 16:48一直没有解决的掉,详情大佬帮忙提点一下。谢谢~
1. 报错信息
2. room模型
3. cabinet模型
4. 连接mysql并且sequelize.import模型
5. 同步mysql数据库 sequelize.sync
6. 逻辑处理操作
再次本菜鸟谢谢Cnodejs的诸位大佬!
2017/08/07 16:54:32
8 回复
生无可怜,我已经绝望了 orz
@zhangjx 唔,老哥,我这个用的express 没必要再换成egg的了啊
@zhang962976642 看错标题了,以为是 用的 Egg
@zhangjx 没事 - -, 来了还能聊点天,一条恢复没有,那我不更尴尬
RoomCabinet 这个 Model 是不是不存在? through 更适合多对多的映射关系
const User = sequelize.define('user', {})
const Project = sequelize.define('project', {})
const UserProjects = sequelize.define('userProjects', {
status: DataTypes.STRING
})
User.belongsToMany(Project, { through: UserProjects })
Project.belongsToMany(User, { through: UserProjects })
Cabinet 表 添加 room_id 字段
Room.hasMany(models.Cabinet, {
foreignKey: 'room_id',
constraints: false,
});
这样应该可以
@zhangjx 大佬解决了
@zhang962976642 分享分享,怎么解决的?
@zhangjx 这个有点尴尬.
Model.associate = function(Model){
Model.hasOne(Model['xxx']);
};
/*
* 这个函数我是声明了,sequelize 4.x版本需要这么声明模型关系,这个函数我声明了 ,没有调用,我在sequelize.import 引入表模型之后,我显示的执 * 行了Model.associate(SequelizeDb);人后通过测试,现在没问题了,讲真这真尴尬,手册上我翻了一天也没看到,可能是我翻译能力太渣了。
*/