Sequelize 4.3.2 n:m(多对多)关联:未处理的拒绝SequelizeEagerLoadingError

我有3个模型:用户,项目,UserProject:

module.exports = function (sequelize, DataTypes) { var User = sequelize.define('User', { title: DataTypes.STRING, description: DataTypes.STRING }, { classMethods: { associate: function (models) { User.belongsToMany(models.Project, { through: 'UserProject', foreignKey: 'userId' }) } }, freezeTableName: true }) return User } module.exports = function (sequelize, DataTypes) { var Project = sequelize.define('Project', { title: DataTypes.STRING, description: DataTypes.STRING }, { classMethods: { associate: function (models) { Project.belongsToMany(models.User, { through: 'UserProject', foreignKey: 'projectId' }) } }, freezeTableName: true }) return Project } module.exports = function (sequelize, DataTypes) { var UserProject = sequelize.define('UserProject', { userId: DataTypes.INTEGER, projectId: DataTypes.INTEGER, }, { classMethods: { }, freezeTableName: true }) return UserProject } 

上面的代码与一些旧版本的Sequelize完美地工作。 现在我更新到Sequelize 4.3.2,并尝试使用这些模型时出现以下错误:

未处理的拒绝SequelizeEagerLoadingError:项目没有关联到用户!

这有什么问题? 我试图在这里做多对多的关联,并且在findAll Projects中包含用户,反之亦然。 我使用MySQL作为数据库。

这里是findAll部分:

 function getUsersWithProjects (request, response, next) { models.User.findAll({ include: [{ model: models.Project, }] }); } 

现在我find了解决scheme。 显然他们已经删除了classMethodsinstanceMethods ,所以关联现在定义如下:

 module.exports = function (sequelize, DataTypes) { var User = sequelize.define('User', { title: DataTypes.STRING, description: DataTypes.STRING }, { freezeTableName: true }) User.associate = function (models) { User.belongsToMany(models.Project, { through: 'UserProject', foreignKey: 'userId' }) }; return User } 

来源: http : //docs.sequelizejs.com/manual/tutorial/upgrade-to-v4.html