Sequelize 中的 Model 详解

阅读时长 10 分钟读完

引言

在 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

纠错
反馈

纠错反馈