Sequelize 中的 Model 详解

引言

在 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