Sequelize 之定义数据模型详解

· 约 6 分钟读完

前言

Sequelize 是一款 Node.js ORM(Object-Relational Mapping)工具,可与多种关系型数据库进行交互,例如 MySQL,PostgreSQL,SQLite 等。Sequelize 提供了定义数据模型的方式,使开发者能够更加灵活地设计数据库表结构。

在本文中,我们将详细讲解 Sequelize 中定义数据模型的各个方面。

安装

首先,我们需要安装 Sequelize 和相应的数据库驱动,以 MySQL 为例:

其中,sequelize-cli 是 Sequelize 的命令行工具,mysql2 是 MySQL 驱动。

定义模型

Sequelize 中的模型可以看作是数据库中表的抽象。我们可以使用模型来进行增删改查操作。模型定义需要包含以下内容:

  1. 模型名称
  2. 字段定义
  3. 数据表名
  4. 模型配置
  5. 关联关系

字段定义

在 Sequelize 中,我们可以定义字段的类型、长度、是否允许为空以及默认值等属性。以下是一些常用字段类型的定义方式:

数据表名

默认情况下,Sequelize 会将模型名称转换成复数形式作为表名。例如,如果我们定义了一个名为 User 的模型,则对应的数据表名为 users。如果不想使用默认数据表名,可以在定义模型时指定 tableName 属性。

模型配置

模型配置包括模型名称、数据表名、数据表引擎等属性。以下为一些常用的配置:

关联关系

在 Sequelize 中,我们可以建立不同模型之间的关联关系,以便于进行复杂的查询操作。

以下为一些常见的关联关系:

  • 一对一:belongsTo 和 hasOne
  • 一对多:hasMany
  • 多对多:belongsToMany

下面是使用 belongsTo 和 hasMany 建立一对多关系的示例:

这样,我们就能够通过 User 模型访问 Post 模型的数据。

示例代码

以下是一个简单的示例,展示了如何使用 Sequelize 定义一个简单的用户表 User:

在上面的示例代码中,我们定义了一个 User 模型,包含了 id、name、email、password、createdAt 和 updatedAt 字段。其中,id 字段为自增主键,createdAt 和 updatedAt 字段为 Sequelize 自动生成的时间戳字段。模型的 tableName 属性指定了数据表名为 users。

在程序运行时,我们先进行数据库连接,并使用 authenticate 方法验证连接是否成功。然后,我们调用 sync 方法创建数据表。由于我们设置了 force 参数为 true,表示将强制删除已存在的数据表并重新创建。最后,我们通过 create 方法创建了一个用户。

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