在 Cursor 中搭建 Express + MySQL 项目,通常需要按顺序完成以下步骤:初始化 Node.js 开发环境、安装 express/mysql2/dotenv 依赖、配置 .env 环境变量、编写 server.js 启动服务、使用 mysql2/promise 创建数据库连接池、手动创建数据库与 users 数据表、插入测试数据,最后实现 GET /users 接口并进行验证。

使用 Cursor 开发 Express 连接 MySQL 的项目时,需要完整完成 Node.js 环境初始化、Express 服务器配置、MySQL 数据库连接、路由与数据模型定义、服务启动以及接口测试。整个流程建议都在 Cursor 编辑器内完成,尽量不要依赖外部终端或 VS Code 插件,这样更便于统一开发与调试。
初始化项目结构
打开 Cursor → 新建文件夹 → 在侧边栏中右键该文件夹 → 选择“Open in Terminal” → 输入 npm init -y,即可生成 package.json 文件并完成 Node 项目初始化。
接着执行 npm install express mysql2 dotenv 安装核心依赖包。这一步必须确保安装成功,否则后续的 Express 服务运行或 MySQL 数据库操作都可能报错,尤其是 【未安装 mysql2 会导致 require('mysql2') 直接崩溃】。
在项目根目录新建 .env 文件,写入以下数据库连接配置:
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=your_password
DB_NAME=testdb
DB_PORT=3306
搭建Express服务骨架
新建 server.js,写入基础的 Express 启动代码:
const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.get('/', (req, res) => {
res.send('Express server running');
});
app.listen(PORT, () => {
console.log(`Server running on http://localhost:${PORT}`);
});点击右上角“Run”按钮(或按 Ctrl+Shift+P → 输入“Cursor: Run”),选择运行 node server.js。如果终端输出 “Server running on http://localhost:3000”,说明 Express 服务已经成功启动,可以继续下一步配置。
配置MySQL连接池
新建 config/db.js,内容如下:
const mysql = require('mysql2/promise');
require('dotenv').config();
const pool = mysql.createPool({
host: process.env.DB_HOST,
user: process.env.DB_USER,
password: process.env.DB_PASSWORD,
database: process.env.DB_NAME,
port: parseInt(process.env.DB_PORT),
waitForConnections: true,
connectionLimit: 10,
queueLimit: 0
});
module.exports = pool;⚠️ 注意:不要使用 mysql2 的传统回调式连接方式,必须使用 mysql2/promise,这样才能更自然地配合 async/await,在 Express 路由中编写清晰的异步数据库查询逻辑。
在 server.js 顶部添加 const pool = require('./config/db');,确保 MySQL 连接池在服务启动时被正确加载。
创建用户表并插入测试数据
第一步:先确认 MySQL 服务已正常运行,例如通过命令行执行 mysql -u root -p 可以成功登录数据库。
第二步:接下来需要在 MySQL 中手动执行建库建表语句。先创建数据库并指定字符集与排序规则,然后切换到 testdb,最后创建 users 用户表:
CREATE DATABASE IF NOT EXISTS testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE testdb;
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL
);
第三步:向 users 表中插入一条测试数据:INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com');
以上三步都不能省略——【数据库和数据表必须提前创建完成,否则调用 pool.execute() 时会抛出 ER_BAD_DB_ERROR】。
编写GET /users接口
方法一:直接在 server.js 中追加路由:
app.get('/users', async (req, res) => {
try {
const [rows] = await pool.execute('SELECT * FROM users');
res.json(rows);
} catch (err) {
console.error(err);
res.status(500).json({ error: 'Database query failed' });
}
});方法二:更推荐将接口逻辑拆分到独立路由文件中。可以新建 routes/userRoutes.js,编写用户相关路由,再在 server.js 中使用 app.use('/api', require('./routes/userRoutes')) 进行挂载。这样的结构更适合后续扩展 Express + MySQL 后端项目。
保存代码后,重启服务(在 Cursor 中点击“Stop”后再点击“Run”),然后访问 http://localhost:3000/users,正常情况下会返回 JSON 格式的用户列表,这也说明 Express 连接 MySQL 的接口已经验证成功。
