Sequelize 中的 findOne 和 findByPk 有区别吗?

Is there a difference between findOne and findByPk in Sequelize?

如果您要根据主键查找内容并且不想包含任何其他选项,那么使用 findOne 还是 findByPk 是否重要?性能会一样吗?

Model.findByPk()内部使用Model.findOne(),从v6.19.0/src/model.js#L1933可以看出。这两种方法都是捷径

最后两种方法都调用了比较通用的Model.findAll()方法,看v6.19.0/src/model.js#L1968.

他们都只是做一些参数验证和创建 where 子句选项,对性能的影响可以忽略不计。

唯一不同的是用法。

Model.findByPk(1)等同于Model.findOne({primaryKey: 1}),需要自己指定主键

在幕后,将 pk 传递给 findOne 或使用 findByPk 没有区别,即性能相同。

这只是 sequelize 给出的一个抽象,目的是为了获得更易读的代码。