在开发 Web 应用时,数据存储是一个必不可少的环节。而 MySQL 作为一种广泛使用的关系型数据库,其在前端开发中也有着重要的作用。本文将介绍如何在 Express.js 中使用 MySQL 实现数据存储。
准备工作
在使用 MySQL 之前,需要先安装 MySQL 数据库,并创建一个数据库和一张表。以 Windows 系统为例,可以按照以下步骤进行安装:
- 下载 MySQL 安装包并解压。
- 配置环境变量,将 MySQL 的 bin 目录加入 PATH 中。
- 打开命令行工具,输入
mysql -u root -p
进入 MySQL 数据库。 - 创建一个数据库,如
mydb
,并指定字符集为utf8mb4
。CREATE DATABASE mydb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
- 创建一张表,如
users
,包含id
、name
和email
三个字段。CREATE TABLE users ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(255) NOT NULL, email VARCHAR(255) NOT NULL, PRIMARY KEY (id) );
安装依赖
在 Express.js 中使用 MySQL,需要安装以下两个依赖:
mysql2
:MySQL 客户端。sequelize
:ORM(Object-Relational Mapping)框架,用于操作数据库。
可以使用以下命令进行安装:
npm install mysql2 sequelize
配置连接
在 Express.js 中使用 MySQL,需要配置数据库连接。可以在应用的入口文件(如 app.js
)中进行配置:
const { Sequelize } = require('sequelize'); const sequelize = new Sequelize('mydb', 'root', 'password', { dialect: 'mysql', host: 'localhost', port: 3306, define: { timestamps: false, }, }); (async () => { try { await sequelize.authenticate(); console.log('Connection has been established successfully.'); } catch (error) { console.error('Unable to connect to the database:', error); } })();
其中,mydb
是数据库名称,root
和 password
分别是 MySQL 的用户名和密码,localhost
是 MySQL 的主机名,3306
是 MySQL 的端口号。define.timestamps
表示不使用默认的时间戳字段。
创建模型
在使用 Sequelize 操作数据库时,需要先定义模型。模型是指数据库中的表在代码中的映射,包含表的结构和操作。可以通过以下代码创建一个 User
模型:
const { DataTypes } = require('sequelize'); const User = sequelize.define('User', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true, }, name: { type: DataTypes.STRING(255), allowNull: false, }, email: { type: DataTypes.STRING(255), allowNull: false, }, }, { tableName: 'users', });
其中,DataTypes
是 Sequelize 中的数据类型,id
、name
和 email
分别是 users
表中的三个字段,primaryKey
表示主键,autoIncrement
表示自增,allowNull
表示不允许为空。
增删改查
在定义好模型后,可以通过模型进行增删改查操作。以下是一些示例代码:
增加数据
const createUser = async (name, email) => { const user = await User.create({ name, email }); return user.get({ plain: true }); };
删除数据
const deleteUser = async (id) => { const user = await User.destroy({ where: { id } }); return user === 1; };
修改数据
const updateUser = async (id, name, email) => { const user = await User.update({ name, email }, { where: { id } }); return user[0] === 1; };
查询数据
const getUser = async (id) => { const user = await User.findByPk(id); return user ? user.get({ plain: true }) : null; }; const getUsers = async () => { const users = await User.findAll(); return users.map((user) => user.get({ plain: true })); };
其中,findByPk
根据主键查询单条数据,findAll
查询所有数据。
总结
本文介绍了如何在 Express.js 中使用 MySQL 实现数据存储。通过配置连接、创建模型和定义增删改查操作,可以方便地操作数据库。同时,Sequelize 还支持事务、关联查询等高级功能,可以满足不同场景下的需求。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65c22f49add4f0e0ffc1ef85