在 Sequelize 我使用 findByPk 但我还需要通过另一个条件
const options = {
where: { role: 'admin' },
};
return models.User.findByPk(id, options)
.then((user) => {...
Run Code Online (Sandbox Code Playgroud)
但即使角色不是管理员,此查询也会重新调整所有用户。我检查了生成的 SQL,我看到 SELECT * from User WHERE id = 1 但我没有看到 AND 角色 = 'admin'。如何使用 findByPk 并传递另一个条件?
谢谢你
jkn*_*tek 18
您必须改为使用findOne,并将主键作为where对象中的字段传递:
return models.User.findOne({
where: {
id: id,
role: 'admin',
},
})
Run Code Online (Sandbox Code Playgroud)
Sequelize 文档可能有点混乱……但是,optionsinfindByPk中的参数与中的参数采用不同的值findOne。如果您仔细查看 findByPk的文档,您会在底部看到一条注释:
有关选项的完整说明,请参阅 Model.findAll,请注意不支持 options.where。
| 归档时间: |
|
| 查看次数: |
10499 次 |
| 最近记录: |