express结合mysql模块化开发的使用(全)
·
下面是一个详细的示例,展示了如何使用 Sequelize 和 Express 实现模块化开发,并包含增删改查、可选的条件查询和分页功能。我们将使用 .env 文件来管理环境变量,并使用控制器来组织代码。
文章目录
目录结构
project-root/
├── app.js
├── controllers/
│ └── userController.js
├── models/
│ └── user.js
├── routes/
│ └── users.js
├── .env
└── package.json
1. 安装必要的依赖
确保你已经安装了以下依赖:
npm install express sequelize mysql2 body-parser dotenv
2. 创建 .env 文件
在项目的根目录下创建一个 .env 文件,并添加你的环境变量。例如:
DB_NAME=your_database_name
DB_USER=your_username
DB_PASSWORD=your_password
DB_HOST=localhost
DB_DIALECT=mysql
PORT=3000
3. 创建 Sequelize 模型
在 models/user.js 文件中定义用户模型:
// models/user.js
require('dotenv').config();
const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASSWORD, {
host: process.env.DB_HOST,
dialect: process.env.DB_DIALECT
});
const User = sequelize.define('User', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: {
type: DataTypes.STRING,
allowNull: false
},
email: {
type: DataTypes.STRING,
allowNull: false,
unique: true
}
}, {
timestamps: false // 不生成 createdAt 和 updatedAt 字段
});
module.exports = User;
4. 创建控制器
在 controllers/userController.js 文件中定义用户相关的控制器函数:
// controllers/userController.js
const User = require('../models/user');
// 创建用户
exports.createUser = async (req, res) => {
try {
const { name, email } = req.body;
const user = await User.create({ name, email });
res.status(201).json(user);
} catch (error) {
res.status(500).json({ error: error.message });
}
};
// 获取所有用户(支持分页和条件查询)
exports.getUsers = async (req, res) => {
try {
const { page = 1, limit = 10, name } = req.query;
// 构建查询条件
const whereClause = {};
if (name) {
whereClause.name = { [Sequelize.Op.like]: `%${name}%` };
}
// 计算偏移量
const offset = (page - 1) * limit;
// 执行查询
const users = await User.findAll({
where: whereClause,
limit: parseInt(limit),
offset: offset
});
// 获取总数以计算总页数
const total = await User.count({ where: whereClause });
const totalPages = Math.ceil(total / limit);
res.json({
users,
page: parseInt(page),
totalPages,
total
});
} catch (error) {
res.status(500).json({ error: error.message });
}
};
// 获取单个用户
exports.getUser = async (req, res) => {
try {
const user = await User.findByPk(req.params.id);
if (user) {
res.json(user);
} else {
res.status(404).json({ error: 'User not found' });
}
} catch (error) {
res.status(500).json({ error: error.message });
}
};
// 更新用户
exports.updateUser = async (req, res) => {
try {
const user = await User.findByPk(req.params.id);
if (user) {
user.name = req.body.name || user.name;
user.email = req.body.email || user.email;
await user.save();
res.json(user);
} else {
res.status(404).json({ error: 'User not found' });
}
} catch (error) {
res.status(500).json({ error: error.message });
}
};
// 删除用户
exports.deleteUser = async (req, res) => {
try {
const user = await User.findByPk(req.params.id);
if (user) {
await user.destroy();
res.status(204).send();
} else {
res.status(404).json({ error: 'User not found' });
}
} catch (error) {
res.status(500).json({ error: error.message });
}
};
5. 创建路由
在 routes/users.js 文件中定义用户相关的路由,并使用控制器函数:
// routes/users.js
const express = require('express');
const router = express.Router();
const userController = require('../controllers/userController');
// 创建用户
router.post('/', userController.createUser);
// 获取所有用户(支持分页和条件查询)
router.get('/', userController.getUsers);
// 获取单个用户
router.get('/:id', userController.getUser);
// 更新用户
router.put('/:id', userController.updateUser);
// 删除用户
router.delete('/:id', userController.deleteUser);
module.exports = router;
6. 创建 Express 应用
在 app.js 文件中设置 Express 应用并引入路由:
// app.js
require('dotenv').config();
const express = require('express');
const bodyParser = require('body-parser');
const usersRouter = require('./routes/users');
const app = express();
app.use(bodyParser.json());
// 使用用户路由
app.use('/users', usersRouter);
// 启动服务器
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
7. 运行应用
现在你可以运行你的应用,它将从 .env 文件中加载环境变量,并提供增删改查、条件查询和分页功能。
node app.js
测试 API
你可以使用 Postman 或 curl 来测试你的 API,以下是一些示例请求:
创建用户
curl -X POST http://localhost:3000/users -H "Content-Type: application/json" -d '{"name": "John Doe", "email": "john@example.com"}'
获取第一页的全部用户列表(每页 10 条记录)
curl http://localhost:3000/users?page=1&limit=10
根据姓名查询用户列表(例如,查找名字包含 “John” 的用户)
curl http://localhost:3000/users?page=1&limit=10&name=John
获取单个用户
curl http://localhost:3000/users/1
更新用户
curl -X PUT http://localhost:3000/users/1 -H "Content-Type: application/json" -d '{"name": "Jane Doe", "email": "jane@example.com"}'
删除用户
curl -X DELETE http://localhost:3000/users/1
通过这种方式,你可以实现模块化开发,并且包含增删改查、条件查询和分页功能。代码中包含了详细的注释,方便理解和维护。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)