N:使用sequelizejs加载(包含)
所以我发现自己陷入了麻烦,试图在M:N关系中使用include加载特性
用户模型关系:
User.belongsToMany(models.rol, { through: { model: models['usuario_rol'] }, as: { plural: 'roles', singular: 'rol' }, foreignKey: 'idusuario' });
rol模型关系:
Rol.belongsToMany(models.usuario, { through: { model: models['usuario_rol'] }, foreignKey: 'idrol' });
最后查询:
db.usuario.findOne({ where: { id: insert.id }, include: [ { model: db.rol } ] });
如果我们尝试这个,它崩溃与错误:rol不与usuario关联!
好奇的是,通过使用user.getRoles()可以获取angular色的sequelize用户对象的实例,
你有什么想法,为什么会发生这种情况?
当你在关联函数中指定一个别名时(在这个例子中是roles
),你必须把它传递给include:
return User.findOne({ where: { id: 52 }, include: [ { model: rol, as: 'roles' } ] });
您也可以保存关联,并通过它:
User.Roles = User.belongsToMany(models.rol, { through: { model: models['usuario_rol'] }, as: { plural: 'roles', singular: 'rol' }, foreignKey: 'idusuario' }); return User.findOne({ where: { id: 52 }, include: [ { association: User.Roles } ] });