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 给出的一个抽象,目的是为了获得更易读的代码。
如果您要根据主键查找内容并且不想包含任何其他选项,那么使用 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 给出的一个抽象,目的是为了获得更易读的代码。