在前端开发中,数据库是必不可少的一部分。而对于 Node.js 后端开发来说,使用 Sequelize ORM 可以简化对 MySQL 数据库的操作。本文将介绍如何在 Koa2 中使用 Sequelize 实现 MySQL 的连接和数据库操作。
安装依赖
使用 Sequelize 前,需要先安装相关依赖。使用以下命令安装所需依赖:
npm install sequelize mysql2
sequelize
是 Sequelize ORM 库本身的依赖;mysql2
是 MySQL 数据库的依赖,用于连接和操作 MySQL 数据库。
连接数据库
在使用 Sequelize 操作 MySQL 数据库之前,需要先建立数据库连接。以下是建立连接的基本步骤:
- 创建连接对象和数据库连接;
- 验证连接是否能够正常工作;
- 同步数据库模型到数据库;
- 关闭连接。
// javascriptcn.com 代码示例 const { Sequelize } = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql', }); async function testConnection() { try { await sequelize.authenticate(); console.log('Connection has been established successfully.'); await sequelize.sync(); console.log('All models were synchronized successfully.'); } catch (error) { console.error('Unable to connect to the database:', error); } finally { await sequelize.close(); console.log('Connection has been closed successfully.'); } } testConnection();
在建立连接对象时需传入数据库名称、用户名和密码等参数,也可以通过 .env
管理敏感信息,防止代码泄露泄漏。
在验证连接是否正常工作时,会自动生成一个 SELECT 1+1 as result;
的 SQL 语句,验证是否能够正常查询数据,如果成功就打印出 “Connection has been established successfully.” 的日志。
在同步数据库模型到数据库时,可以根据之前的定义的 model 创建出相应的数据表,并且如果数据表不存在的情况下,Sequelize 会自动帮助创建数据表。如果表已经存在了,Sequelize 会在表上加上缺少的列。
如果没有错误,最后会显示 “All models were synchronized successfully.” 的日志。最后通过调用 sequelize.close()
方法关闭连接。
定义 Model
在 Sequelize 中,Model 表示数据结构,即表中的列,可以定义每个列的数据类型、默认值等属性。Model 与表的关系类似于类和对象之间的关系。以下是一个简单的 User Model 定义示例:
// javascriptcn.com 代码示例 const { DataTypes } = require('sequelize'); const sequelize = new Sequelize('database', 'username', 'password', { host: 'localhost', dialect: 'mysql', }); const User = sequelize.define('User', { firstname: { type: DataTypes.STRING, allowNull: false, }, lastname: { type: DataTypes.STRING, allowNull: false, }, age: { type: DataTypes.INTEGER, allowNull: true, }, }, { // Other model options });
在定义 Model 时,需要创建一个名称和属性对象的映射。属性对象指定每个属性的名称、数据类型、是否允许为空、默认值等。sequelize.define()
方法用于定义 Model,接受两个参数:
- 第一个参数是 Model 的名称,将被用于生成表格名称;
- 第二个参数是属性对象,用于规定表格的列和每一列的属性。
常见的数据类型有:STRING,INTEGER,BOOLEAN,DATE,TEXT 等。
增、删、改、查
在定义好 Model 之后,就可以通过 Model 实例来进行数据库增删改查操作。以下是一些基本的示例:
增加数据
// javascriptcn.com 代码示例 // 第一种方式 const user = await User.create({ firstname: 'John', lastname: 'Doe', age: 34, }); // 第二种方式 const user = new User({ firstname: 'John', lastname: 'Doe', age: 34, }); await user.save();
以上两种方式都可以添加数据到 User 表中。
删除数据
await User.destroy({ where: { id: 1, }, });
将根据 id
来删除 User 表中的一行数据。
更新数据
await User.update({ age: 30, }, { where: { firstname: 'John', }, });
将更新有 firstname
为 John
的用户的 age
列。
查询数据
const users = await User.findAll({ where: { age: { [Sequelize.Op.gte]: 18 }, }, }); console.log(users.every(user => user instanceof User)); // true console.log('All users:', JSON.stringify(users, null, 2));
将找到 User 表中所有年龄大于或等于 18 的用户。
总结
以上为 Koa2 中使用 Sequelize 实现 MySQL 连接和数据库操作的方法和示例。Sequelize 是一款强大且易于使用的 ORM 库,可以在 Node.js 后端开发中大幅度简化与 MySQL 数据库的交互。对前端开发者而言,熟练使用 Sequelize 可以将前后端开发无缝对接,开发出更加高效的 Web 应用程序。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/652fe28b7d4982a6eb11cb04