在Cursor中完成Express+MySQL项目需依次初始化Node环境、安装express/mysql2/dotenv、配置.env、编写server.js启动服务、用mysql2/promise建连接池、手动创建数据库与users表、插入测试数据,最后实现GET /users接口并验证。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

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


















