在Sequelize中,我正在使用findByPk,但我还需要传递其他条件
const options = {
where: { role: 'admin' },
};
return models.User.findByPk(id, options)
.then((user) => {...
但是,即使角色不是admin,此查询也会重新调整所有用户。我检查了生成的SQL,我看到了 从用户WHERE ID = 1中选择*,但我没有看到AND角色='admin'。 如何使用findByPk并通过其他条件?
谢谢
答案 0 :(得分:0)
您必须改为使用findOne
,并将主键作为字段传递给where
对象:
return models.User.findOne({
where: {
id: id,
role: 'admin',
},
})
Sequelize文档可能会有些混乱……但是,options
中的findByPk
参数与findOne
中的参数没有相同的值。如果您仔细观察documentation for findByPk,则会在底部看到一条注释,内容为:
有关选项的完整说明,请参见:Model.findAll。请注意,不支持options.where 。