如何在没有加载关联对象的情况下通过关联查询sequelize?

我有多个模型相互关联。

例如:

var User = sequelize.define("user") var Project = sequelize.define("project") Project.hasMany(User) 

现在我想查询包含特定用户的所有项目。

例如:

 Project.findAll({ include: [ { model: User, where: { id } } ] }) 

这工作,但也加载用户,并将其附加到项目。 我怎么能说sequelize,用户不应该被添加到find的项目?

多对多关系是使用belongsToMany()方法在两边重复的情况下定义的。 对于您的具体用例,您将不得不使用直通模型作为关系,并直接查询直通模型。

 var User = sequelize.define("user") var Project = sequelize.define("project") var ProjectUser = sequelize.define("projectUser") Project.belongsToMany(User, { through: ProjectUser }) User.belongsToMany(Project, { through ProjectUser }); ProjectUser.findAll({ where: { UserId: 'someId' }, // We only want the project, not the user. // You might need to do ProjectUser.belongsTo() for both // models for this to work. include: [Project] }) .then(function(results) { // Here we are getting an array of ProjectUsers, to return all the projects // we map it to a new array of only projects. return results.map(function(userProject) { return userProject.Project; }); })