Mysql 继续执行一对多关联属性的何处查询?

Mysql 继续执行一对多关联属性的何处查询?,mysql,database,sequelize.js,Mysql,Database,Sequelize.js,我在数据库中有以下表格: Users:id | name | age 爱好:id |用户id |爱好 在sequelize中,我有以下关联: 用户。有很多(爱好) 嗜好。归属于(用户) 要检索用户列表及其爱好,查询如下: Users.findAll(包括:[{model:habiods}]) 我将查询结果映射到域对象 查询结果如下所示: [{id:1,姓名:'John',年龄:20岁,爱好:['fishing','running']}] 我试图返回一个有钓鱼爱好的用户列表 据我所知,我可以对关联

我在数据库中有以下表格:

Users:id | name | age
爱好:id |用户id |爱好

在sequelize中,我有以下关联:

用户。有很多(爱好)
嗜好。归属于(用户)

要检索用户列表及其爱好,查询如下:

Users.findAll(包括:[{model:habiods}])

我将查询结果映射到域对象

查询结果如下所示:

[{id:1,姓名:'John',年龄:20岁,爱好:['fishing','running']}]

我试图返回一个有钓鱼爱好的用户列表

据我所知,我可以对关联本身应用where查询,如下所示:

Users.findAll(包括:[{model:habiods,其中:{habiody:'fishing'}])

但这仍然会返回所有用户,并且只会返回每个钓鱼用户的爱好


有没有办法根据用户的爱好在用户级别应用where查询?

我认为您需要更改加入类型。Sequelize在连接两个模型时默认使用左外连接,但如果通过将
required
设置为
true
将其更改为内部连接,则将获得预期的结果-

Users.findAll(include: [{model: Hobbies, where: {hobby: 'fishing'}, required : true}])
我希望有帮助