引言
在 Web 开发中,我们经常需要和数据库打交道。而在 Node.js 中,Sequelize 成为了一款很流行的 ORM 框架。通过 Sequelize,我们可以方便地操作数据库,而且支持多种数据库(MySQL、PostgreSQL、SQLite、MSSQL)。
在 Sequelize 中,有一个重要的概念就是 Model。本文将对 Sequelize 中的 Model 进行详细讲解。
Model 模型
定义 Model
在 Sequelize 中,定义 Model 非常简单。
----- - ---------- --------- - - --------------------- ----- --------- - --- ---------------------------- - -------- ----- --- ----- ---- - ------------------------ - ---------- - ----- ----------------- ---------- ----- -- --------- - ----- ---------------- - ---
上述代码中,我们定义了 User 这个 Model,它具有 firstName 和 lastName 两个属性,数据类型分别为 STRING,其中 firstName 不允许为空。
Model 实例
当我们定义 Model 后,就可以通过它来访问数据库中的数据了。
创建 Model 实例
------ -- -- - ----- ---------------- ------ ---- --- ----- ---- - ----- ------------- ---------- ------- --------- ----- --- -----
上述代码中,我们通过 User.create()
创建了一个新的 User 实例,将其保存到数据库中。
查询 Model 实例
------ -- -- - ----- ----- - ----- --------------- ------------------- -----
上述代码中,我们通过 User.findAll()
查询了数据库中所有 User 实例。
更新 Model 实例
------ -- -- - ----- ---- - ----- ----------------- -------------- - -------- ------------- - -------- ----- ------------ -----
上述代码中,我们通过 User.findByPk()
查询了主键为 1 的 User 实例,并修改了其 firstName 和 lastName 属性后保存到数据库中。
删除 Model 实例
------ -- -- - ----- ---- - ----- ----------------- ----- --------------- -----
上述代码中,我们通过 User.findByPk()
查询了主键为 1 的 User 实例,并删除了它。
Model 属性的详细定义
Sequelize 中提供了丰富的数据类型,支持从字符串到数值、日期等多种类型,也可以自定义类型。在属性定义时,我们可以设置一些选项(如 allowNull、defaultValue 等)来对属性进行限制,这些限制将在数据库表结构生成时生效。
----- - ---------- --------- - - --------------------- ----- --------- - --- ---------------------------- - -------- ----- --- ----- ---- - ------------------------ - ---------- - ----- --------------------- ---------- ------ ------------- ------ -- --------- - ----- --------------------- ---------- ------ --------- - ---- --- --- - -- ---- - ----- ------------------ ---------- ------ ------------- -- -- ------- - ----- ---------------------- ---------- ---------- ----- -- ------ - ----- ----------------- ---------- ------ ------- ---- -- ------- - ----- --------------- ---------- ----- - ---
数据类型
Sequelize 支持如下数据类型:
- STRING:字符串类型,可配置最大长度。
- INTEGER:整数类型。
- BIGINT:长整数类型。
- FLOAT:浮点数类型。
- DECIMAL:十进制数类型。
- BOOLEAN:布尔类型。
- DATE:日期类型。
- TIME:时间类型。
- CHAR:定长字符串类型。
- TEXT:文本类型。
- UUID:UUID 类型。
- ENUM:枚举类型。
- JSON:JSON 类型。
- BLOB:二进制类型。
属性设置选项
- allowNull:是否允许为空,默认为 true。
- primaryKey:是否为主键,默认为 false。
- autoIncrement:是否自增,仅对整数有效,默认为 false。
- unique:是否唯一索引,默认为 false。
- defaultValue:默认值。
- validate:属性验证规则。
如何使用 Model
定义 Model
----- - ---------- --------- - - --------------------- ----- --------- - --- ---------------------------- - -------- ----- --- ----- ---- - ------------------------ - ---------- - ----- ----------------- ---------- ------ --------- - -------- - ---- ------- -- --------- - ---- ------- - - -- --------- - ----- ----------------- ---------- ------ --------- - -------- - ---- ------- -- --------- - ---- ------- - - -- ------ - ----- ----------------- ---------- ------ ------- - ---- --------- -- --------- - -------- - ---- ---------- - - -- --------- - ----- ----------------- ---------- ------ --------- - -------- - ---- ------- -- --------- - ---- ------- - - - ---
在这个例子中,我们定义了一个 User Model,它有四个字段:firstName、lastName、email、password。其中 firstName、lastName 是字符串类型,email 是字符串类型且必须是合法的邮箱格式,password 是字符串类型。
创建 Model 实例
--------------------- ----- ----- ---- -- - ----- - ---------- --------- ------ -------- - - --------- --- - ----- ---- - ----- ------------- ---------- --------- ------ -------- --- ---------- ----- ---- ----- ------------- --- - ----- ------- - ---------- ----- ---- -------- ------------- --- - ---
在这个例子中,我们根据用户提交的表单数据,新建一个 User 实例并将其保存到数据库中。
查询 Model 实例
----------------- ----- ----- ---- -- - --- - ----- ----- - ----- --------------- ---------- ----- ---- ----- ----- --- - ----- ------- - ---------- ----- ---- -------- ------------- --- - ---
在这个例子中,我们查询了数据库中所有的 User 实例,并将其返回。
更新 Model 实例
--------------------- ----- ----- ---- -- - ----- - -- - - ----------- ----- - ---------- --------- ------ -------- - - --------- --- - ----- ---- - ----- ------------------ -------------- - ---------- ------------- - --------- ---------- - ------ ------------- - --------- ----- ------------ ---------- ----- ---- ----- ------------- --- - ----- ------- - ---------- ----- ---- -------- ------------- --- - ---
在这个例子中,我们根据用户提交的表单数据,修改一个 User 实例的属性并将其保存到数据库中。
删除 Model 实例
------------------------ ----- ----- ---- -- - ----- - -- - - ----------- --- - ----- ---- - ----- ------------------ ----- --------------- ---------- ----- ---- -------- ------ --- - ----- ------- - ---------- ----- ---- -------- ------------- --- - ---
在这个例子中,我们根据用户提交的 id,查询对应的 User 实例并将其删除。
总结
在本文中,我们详细讲解了 Sequelize 中的 Model,介绍了如何定义、创建、查询、更新和删除 Model 实例,并讨论了它们的属性设置选项和常见用法。希望本文能对读者增加对 Sequelize 的理解,也能够为前端开发打下一定的基础。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6649ed99d3423812e48dde6c