Sequelize使用findByPk时在include内配置where条件是否合法
结论
你写的这种用法是完全合法有效的,不会有语法或逻辑问题。
原理说明
findByPk本质上是findOne的语法糖,它只是自动在顶层拼接了主键匹配的where条件,仅不允许自定义顶层where参数,其余findOne支持的所有查询配置都可以正常使用,关联查询include的配置也完全兼容。- 你写在
include内部的where条件作用是过滤关联的userGroup表数据,只会返回Time为null的关联记录,加上你配置了required: false,如果没有符合条件的关联userGroup,查询也只会把关联字段设为null,不会过滤掉主表的user记录,逻辑完全符合Sequelize的关联查询规则。
验证方式
你可以开启Sequelize的SQL日志打印,执行该查询后会看到生成的SQL语句中,关联userGroup表的ON子句会自动带上userGroup.Time IS NULL的条件,完全符合你的预期。
内容的提问来源于stack exchange,提问作者Elena Alexeenko
相关产品推荐
相关产品推荐

