Sequelize 中模型 (Model) 的定义及使用步骤详解

阅读时长 7 分钟读完

Sequelize 是一款 Node.js 中十分流行的 ORM 框架。在使用 Sequelize 的过程中,定义 Model 是必不可少的一步。本文将详细介绍 Sequelize 中 Model 的定义及使用步骤,以及对开发者的指导意义,帮助开发者快速上手 Sequelize。

什么是 Model

在 Sequelize 中,Model 是指数据库中的表与表之间的关系,可以看做是数据的一个逻辑映射。所以在 Sequelize 中,每张表都有其对应的一个 Model。

在 Model 中,我们定义了该表的各个字段,以及该表与其他表的关联关系。Model 不仅是一个对应于数据库表的实体,也包含了对该实体进行增删改查的方法。

Model 的定义

在 Sequelize 中,我们可以通过 Sequelize.define 方法来定义 Model。

下面是一个简单的示例:

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

这里我们定义了一个 User Model,它拥有三个字段: username、email、password。每个字段都有对应的数据类型和属性。其中,allowNull 表示该字段是否可为空,unique 则表示该字段是否唯一。

Model 的关联关系

在 Sequelize 中,Model 之间可以有 4 种关联关系:一对一、一对多、多对一和多对多。

下面是每种关系的示例:

一对一关系

在这里,我们定义了一个 User 和 Profile 的一对一关系。其中,User.hasOne(Profile) 表示 User 模型拥有一个 Profile 模型,而 Profile.belongsTo(User) 表示 Profile 模型只属于一个 User 模型。

一对多关系

在这里,我们定义了一个 User 和 Post 的一对多关系。其中,User.hasMany(Post) 表示 User 模型可以拥有多个 Post 模型,而 Post.belongsTo(User) 表示 Post 模型只属于一个 User 模型。

多对一关系

在这里,我们定义了一个 Company 和 User 的多对一关系。其中,Company.hasMany(User) 表示 Company 模型可以拥有多个 User 模型,而 User.belongsTo(Company) 表示 User 模型只属于一个 Company 模型。

多对多关系

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

在这里,我们定义了一个 User 和 Project 的多对多关系。其中,User.belongsToMany(Project, { through: UserProjects }) 表示一个 User 模型可以拥有多个 Project 模型,而 Project.belongsToMany(User, { through: UserProjects }) 表示一个 Project 模型可以拥有多个 User 模型。

Model 的查询

在 Sequelize 中,我们可以使用 Model 中定义的各种查询方法来进行不同类型的查询。下面是一些常用的查询方法:

查询所有记录

以上代码可以用来查询 User 表中的所有用户记录。

根据条件查询

以上代码可以查询 User 表中 username 为“张三”的用户记录。

支持操作符

以上代码可以查询 User 表中年龄大于 18 岁的用户记录。在 where 中,我们使用了一个操作符 Op.gt(大于),它的值为 18。

分页

以上代码可以查询 User 表中第 1 页的数据,每页数据量为 10 条。

Model 的操作

在 Sequelize 中,我们可以通过 Model 来进行数据的增删改查操作。下面是一些常用的操作方法:

添加数据

以上代码可以向 User 表中添加一条用户记录。

更新数据

以上代码可以更新 User 表中 username 为“张三”的用户记录的邮箱地址。

删除数据

以上代码可以删除 User 表中 username 为“张三”的用户记录。

总结

本文详细介绍了 Sequelize 中 Model 的定义及使用步骤,同时讲解了 Model 的关联关系、查询和操作等方面。希望可以对开发者快速上手 Sequelize 提供帮助。

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

纠错
反馈