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 } ] });