Sequelize 初识

阅读时长 8 分钟读完

Sequelize 是 Node.js 中一个轻量级的 ORM(Object-Relational Mapping)库,它可以映射 Node.js 中的对象和关系型数据库中的表、行、列等对象,使得开发者可以用面向对象编程的方式来操作数据库。

本文将详细介绍 Sequelize 的使用方法和注意事项,以及指导读者如何在实际项目中使用该 ORM 库。本文假设读者已经有一定的 Node.js 编程基础,并对关系型数据库有一定的了解。

安装和配置

使用 Sequelize 前需要进行安装。在终端输入以下命令:

安装完成后,还需要安装相应的数据库驱动程序,Sequelize 目前支持以下几种数据库:

  • MySQL
  • PostgreSQL
  • SQLite
  • MSSQL

以 MySQL 为例,在终端输入以下命令:

安装完成后,就可以在代码中使用 Sequelize 了。在代码中引入 Sequelize:

接着,创建一个 Sequelize 实例:

其中,dialect 是指定数据库类型,host 是指定数据库服务器的地址,usernamepassword 是指定数据库服务器的登录凭证,database 是指定要连接的数据库名称。

模型定义

模型是 Sequelize 中最重要的概念之一,它可以代表数据库中的一个表或多个表的联合。在 Sequelize 中,我们通过定义模型来与数据库进行交互。下面是一个简单的模型定义示例:

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

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

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

在该示例代码中,我们使用 define 方法定义了一个名为 User 的模型,并定义了三个属性:firstNamelastNameemail

其中,DataTypes 是 Sequelize 中用于定义数据类型的对象,常见的数据类型包括 STRINGINTEGERBOOLEANDATE 等等。每个属性都需要指定一个数据类型。

除了数据类型以外,还可以定义以下属性:

  • allowNull: 指定该属性是否可以为 null。默认值为 true
  • defaultValue: 指定该属性的默认值。
  • unique: 指定该属性是否必须唯一。
  • primaryKey: 指定该属性是否为主键。
  • autoIncrement: 指定该属性是否自增。

数据库操作

定义好模型后,就可以通过模型进行数据库操作了。下面是一些常见的数据库操作示例。

创建实例

创建实例的方法有两种。

第一种是通过调用模型的 create 方法:

第二种是通过实例的 save 方法:

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

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

第一种方法比较简便,但是还需要额外的查询语句来获取新建实例的 ID。如果需要获取实例 ID,可以使用第二种方法。

查询实例

查询实例的方法有多种。

根据 ID 查询:

根据属性查询:

查询多个实例:

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

更新实例

更新实例:

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

删除实例

根据 ID 删除实例:

根据属性删除实例:

关联模型

在实际开发中,数据库表之间经常会存在关联关系。在 Sequelize 中,我们可以使用 belongsTohasOnehasManybelongsToMany 等方法来定义模型之间的关系。

下面是一个示例:

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

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

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

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

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

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

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

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

在该示例代码中,我们定义了两个模型 UserPost,并通过 hasManybelongsTo 方法建立了关联关系。其中,hasMany 方法表示 User 模型拥有多个 Post 实例,而 belongsTo 方法表示 Post 模型属于一个 User 实例。

在创建实例时,我们可以通过 setUser 方法将 Post 实例关联到 User 实例上。

结语

到这里,我们已经初步了解了 Sequelize 的使用方法和注意事项,并通过示例代码演示了一些常见的数据库操作和模型关联。希望读者可以通过本文的介绍,掌握基本的 Sequelize 技能,进一步提升 Node.js 后端开发的能力。

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

纠错
反馈