介绍
Sequelize 是一个 Node.js 的 ORM(Object-Relational Mapping)库,可以用来管理关系型数据库的数据。它支持 MySQL、PostgreSQL、SQLite 和 Microsoft SQL Server 等多种数据库,是 Node.js 生态中比较常用的 ORM 库之一。
Sequelize 可以通过 JavaScript 或 TypeScript 来进行声明式的数据操作,包括增删改查、事务、连接池等操作。
在本文中,我们将介绍如何使用 Sequelize ORM 结合 MySQL 数据库进行数据管理操作,包括在 Node.js 中使用 Sequelize 进行数据库连接、数据结构定义、数据操作等方面的内容。
安装
首先,我们需要在项目中安装 Sequelize 和 MySQL 驱动:
npm i --save sequelize mysql2
连接数据库
在使用 Sequelize 进行数据操作前,需要先建立数据库连接。以下是连接 MySQL 数据库的示例代码:
const { Sequelize } = require('sequelize'); const sequelize = new Sequelize('<database>', '<username>', '<password>', { host: '<host>', dialect: 'mysql', });
其中 <database>
、<username>
、<password>
、<host>
分别是 MySQL 数据库的名称、用户名、密码和地址。dialect
表示使用的数据库类型,默认为 mysql
。
定义模型
在 Sequelize 中,模型(Model)相当于一个数据表,用来定义数据结构和逻辑。在使用 Sequelize 前,我们需要先定义模型。
Sequelize 的模型定义方式分为两种:使用类(Class)定义和使用工厂(Factory)定义。这里我们以工厂方式为例,定义一个 User
模型:
-- -------------------- ---- ------- ----- - ---------- --------- - - --------------------- ----- --------- - --- ----------------------- ------------- ------------- - ----- --------- -------- -------- --- ----- ---- - ------------------------ - ----- - ----- ----------------- ---------- ------ -- ---- - ----- ------------------ ---------- ------ -- ---
在上面的代码中,我们通过 sequelize.define()
方法定义了一个名为 User
的模型,该模型包含 name
和 age
两个字段。
Sequelize 支持多种数据类型,包括 STRING
、INTEGER
、BOOLEAN
、FLOAT
等常用数据类型,也可以通过 DataTypes.ENUM
定义枚举类型。allowNull
表示是否允许字段为空,默认为 true
。
数据操作
定义好模型后,我们就可以进行数据操作了。下面是一些常用的数据操作示例:
插入数据
const newUser = await User.create({ name: 'Tom', age: 18, });
User.create()
方法可以用来插入一条新的记录,返回值为插入后的数据对象。
查询数据
const usersByAge = await User.findAll({ where: { age: 18 }, });
User.findAll()
方法可以用来查询满足条件的记录,返回值为数据对象数组。
更新数据
const updatedRows = await User.update( { age: 19 }, { where: { name: 'Tom' } }, );
User.update()
方法可以用来更新符合条件的记录,并返回受影响的行数。
删除数据
const deletedRows = await User.destroy({ where: { name: 'Tom' } });
User.destroy()
方法可以用来删除符合条件的记录,并返回受影响的行数。
事务
Sequelize 支持事务(Transaction)操作,可以确保数据的一致性和完整性。以下是一个使用事务进行数据插入和更新的示例:
await sequelize.transaction(async (t) => { const newUser = await User.create({ name: 'Bob', age: 21 }, { transaction: t }); const affectedRows = await User.update({ age: 22 }, { where: { name: 'Tom' }, transaction: t }); });
在上面的代码中,我们通过 sequelize.transaction()
方法创建了一个事务对象 t
,并在事务对象的上下文中进行操作。通过在数据操作函数中传入 transaction: t
参数,可以确保这些操作在同一个事务中进行。
总结
本文介绍了如何使用 Sequelize ORM 结合 MySQL 数据库进行数据管理操作。我们首先学习了如何连接 MySQL 数据库,然后定义了一个 User
模型,并演示了如何进行数据的增删改查操作。最后,我们还介绍了如何使用事务确保数据的一致性。希望本文能够对前端开发者学习 Sequelize 和 MySQL 数据库操作有一定的指导意义。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6484213048841e989434b866