Sequelize 的一些坑

阅读时长 3 分钟读完

Sequelize 是一个 Node.js ORM(Object-Relational Mapping) 库,用于操作各种关系型数据库,如 MySQL、PostgreSQL 等。由于其易于使用且文档齐全,Sequelize 已经成为了使用 Node.js 开发 Web 应用的首选 ORM 库。但是,在使用 Sequelize 过程中,还是有一些常见的坑需要注意。

坑1:默认添加 createdAt 和 updatedAt 字段

在使用 Sequelize 创建模型时,如果没有设置 timestamps 属性,则默认会添加 createdAt 和 updatedAt 两个时间戳字段。这在有些场景下是不需要的,如使用已有的数据库表时。解决方法是在模型定义时将 timestamps 属性设置为 false:

坑2:自定义主键时需要显式指定 autoIncrement

如果你需要在你的模型中使用自定义主键,那么你需要通过显式指定 autoIncrement 属性来告诉 Sequelize 这是一个自增的主键,否则在创建数据时可能会出现错误:

坑3:调用 findOne 方法时不要勿传参数

从 Sequelize v6 版本开始,findOne 方法在调用时不再接受参数。如需要指定查询条件,请使用 where 属性:

-- -------------------- ---- -------
-- ---
--------------
  ------ -
    ----- -------
  -
---

-- ---
--------------
  ------ -
    ----- -------
  -
---

坑4:调用 sum 和 count 方法时需要指定属性

在使用 sum 和 count 方法计算某些数据的总和或数量时,需要指定需要计算的属性名:

-- -------------------- ---- -------
-- -----------
----------------- -
  ------ -
    ------- ---
  -
---

-- ---------
-------------

坑5:where 条件中的数组需要使用 $in 操作符

在使用 where 属性指定查询条件时,如果需要查询某个属性为一个数组中的某个元素时,需要使用 $in 操作符:

PS:以上仅代表本人个人观点,如果有错误之处还请指正。

总结

以上是 Sequelize 中的一些常见坑点,希望能对你在实际项目中避免一些不必要的错误。当然,Sequelize 还有很多其他的功能和用法,有兴趣的同学可以去阅读其官方文档以深入了解。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/645f2202968c7c53b0137f37

纠错
反馈