引言
对于前端开发人员而言,操作关系型数据库和进行 CRUD 操作往往是不可避免的任务。Sequelize 是一款基于 Node.js 的 ORM 框架,它提供了一套强大的 API 用于操作 MySQL、PostgreSQL、SQLite 和 Microsoft SQL Server 等关系型数据库,用于简化代码,减少繁琐的 SQL 串接。与传统的 ORM 框架相比,Sequelize 有很高的可定制性和灵活性,以适应各种复杂的业务场景。
Sequelize-cli 是 Sequelize 的命令行工具,用于方便地管理数据库。本文将详细介绍如何使用 Sequelize-cli 进行数据库自动生成,并结合示例代码进行讲解。
准备工作
- 安装 Node.js 环境
- 安装 MySQL 数据库
- 安装 Sequelize 和 Sequelize-cli
npm install --save sequelize npm install --save-dev sequelize-cli
初始化项目
创建一个新的项目,并使用 Sequelize-cli 初始化数据库配置
mkdir blog cd blog npm init -y npx sequelize-cli init
执行完初始化之后,会在项目根目录下生成四个目录:
- config: 用于存放数据库配置文件
- migrations: 用于存放数据库迁移脚本
- models: 用于存放模型定义文件
- seeders: 用于存放数据库种子数据
创建模型
使用 Sequelize-cli 创建一个新的模型
npx sequelize-cli model:generate --name User --attributes email:string,password:string
执行完上述命令之后,会在 models
目录下生成一个新的名为 User.js
的文件,该文件定义了一个名为 User
的模型。
-- -------------------- ---- ------- ---- -------- ----- - ----- - - --------------------- -------------- - ----------- ---------- -- - ----- ---- ------- ----- - ------ ----------------- - -- ------ ----------- ---- - -- ----------- ------ ----------------- --------- ---------------- -- - ---------- ---------- ------- --- ------ ----- --展开代码
模型文件中包含以下内容:
- 引入了
sequelize
和Model
类 - 使用
Model.init
方法定义了User
模型的属性和配置项 - 定义了
static associate
方法,用于配置模型之间的关联关系,暂时为空
数据库迁移
在创建完模型之后,需要执行数据库迁移,使得数据库中包含对应的表结构。
使用 Sequelize-cli 创建一个新的迁移脚本
npx sequelize-cli migration:generate --name create-users
执行完上述命令之后,会在 migrations
目录下生成一个新的名为 xxxxxx-create-users.js
的文件,该文件定义了一个名为 create-users
的迁移脚本。
-- -------------------- ---- ------- ---- -------- -------------- - - --- ----- ---------------- ---------- -- - ----- ----------------------------------- - --- - ---------- ------ -------------- ----- ----------- ----- ----- ----------------- -- ------ - ----- ---------------- -- --------- - ----- ---------------- -- ---------- - ---------- ------ ----- -------------- -- ---------- - ---------- ------ ----- -------------- - --- -- ----- ----- ---------------- ---------- -- - ----- ---------------------------------- - --展开代码
迁移脚本中包含以下内容:
- 使用
queryInterface.createTable
方法定义了一个名为Users
的表,包含对应的字段和类型 - 使用
queryInterface.dropTable
方法定义了撤销迁移的操作
执行数据库迁移
npx sequelize-cli db:migrate
执行完上述命令之后,可以在数据库中看到名为 Users
的表已经被成功创建。
模型操作
使用模型进行数据库操作前,需要先对模型进行配置。
使用 models/index.js
文件来配置所有模型,其中包含了数据库的连接信息和每个模型的定义。在 models/index.js
中添加以下代码:
-- -------------------- ---- ------- ---- -------- ----- -- - -------------- ----- ---- - ---------------- ----- --------- - --------------------- ----- -------- - -------------------------- ----- --- - -------------------- -- -------------- ----- ------ - ----------------- - ------------------------------- ----- -- - --- --- ---------- -- ------------------------- - --------- - --- ----------------------------------------------- -------- - ---- - --------- - --- -------------------------- ---------------- ---------------- -------- - -- ----------------------- ------------ -- - ------ ------------------ --- -- -- ----- --- --------- -- --------------- --- ------- -- ------------- -- - ----- ----- - ---------------------------- ----------------- --------------------- -------------- - ------ --- --------------------------------- -- - -- ------------------------- - ---------------------------- - --- ------------ - ---------- ------------ - ---------- -------------- - ---展开代码
在 models/index.js
文件中,使用 readdirSync
方法读取 models
目录下的所有文件,将每个模型导入到 db
对象中,并通过 associate
方法建立模型之间的关联关系。最后,将 sequelize
和 Sequelize
实例导出。
在进行模型操作前,需要先使用 require
方法引入 models/index.js
文件,从而获得所有模型的实例。在 app.js
文件中添加以下代码。
const models = require('./models');
使用模型进行数据库操作。以下为一些基本操作的示例代码。
增加记录
models.User.create({ email: 'test@example.com', password: '123456' }).then(user => { console.log(user.toJSON()); });
使用 create
方法创建一个新的 User
记录,并打印出数据库返回的 JSON 数据。此时,数据库中将会增加一条 email
为 test@example.com
的新记录。
查找记录
models.User.findOne({ where: { email: 'test@example.com' } }).then(user => { console.log(user.toJSON()); });
使用 findOne
方法查找符合特定条件的一条记录,并打印出数据库返回的 JSON 数据。
修改记录
-- -------------------- ---- ------- -------------------- --------- -------- -- - ------ - ------ ------------------ - ---------- -- - --------------------- ---展开代码
使用 update
方法修改符合特定条件的记录,并在操作成功后打印提示信息。此时,数据库中与 email
为 test@example.com
相关的记录中的 password
字段将会被改为 654321
。
删除记录
models.User.destroy({ where: { email: 'test@example.com' } }).then(() => { console.log('用户已删除'); });
使用 destroy
方法删除符合特定条件的记录,并在操作成功后打印提示信息。此时,数据库中与 email
为 test@example.com
相关的记录将被删除。
结语
Sequelize-cli 是 Sequelize 操作数据库的重要工具,它大大简化了数据库操作的流程,为开发者节省了时间和精力。本文简要介绍了如何使用 Sequelize-cli 进行数据库自动生成,并结合示例代码进行详细讲解,希望能为读者提供指导和帮助。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67c6ff7bcc0f7239cde844ac