【问题标题】:using findByPk and WHERE condition in sequelize在 sequelize 中使用 findByPk 和 WHERE 条件
【发布时间】:2020-03-25 10:35:07
【问题描述】:

在 Sequelize 中,我使用的是 findByPk,但我还需要传递另一个条件

const options = {
    where: { role: 'admin' },
};

return models.User.findByPk(id, options)
    .then((user) => {...

但即使角色不是管理员,此查询也会重新调整所有用户。我检查了生成的 SQL,我看到了 SELECT * from User WHERE id = 1 但我没有看到 AND 角色 = 'admin'。 如何使用 findByPk 并传递另一个条件?

谢谢

【问题讨论】:

  • 如果对您有帮助,请不要忘记将我的答案标记为已接受。谢谢!
  • @jknotek 对不起,我忘了。谢谢提醒!
  • 没问题,谢谢!
  • 这行得通.....

标签: sequelize.js


【解决方案1】:

您必须改用findOne,并将主键作为where 对象中的字段传递:

return models.User.findOne({
  where: {
    id: id,
    role: 'admin', 
  },
})

Sequelize 文档可能有点混乱...但是,findByPk 中的 options 参数与 findOne 中的参数不同。如果您仔细查看documentation for findByPk,您会在底部看到一条注释:

有关选项的完整说明,请参阅:Model.findAll,注意 options.where 不受支持

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    • 2022-10-16
    • 2019-11-20
    • 1970-01-01
    相关资源
    最近更新 更多