1. 创建本地Express项目
首先使用express-generator创建一个Express项目骨架:
# 全局安装express-generator
npm install -g express-generator
# 创建Express项目(这里命名为record-app)
express record-app
# 进入项目目录
cd record-app
# 安装基础依赖
npm install
2. 安装必要的依赖包
安装连接MongoDB所需的依赖:
# 安装MongoDB官方驱动
npm install mongodb --save
# 或者使用Mongoose(推荐,更易于使用)
npm install mongoose --save
# 安装其他可能需要的依赖
npm install cors --save # 处理跨域请求
npm install dotenv --save # 环境变量管理
3. 配置数据库连接
在项目根目录创建.env
文件保存数据库连接信息(注意不要将此文件提交到版本控制):
DB_HOST=XXXXXXXX
DB_PORT=27017
DB_NAME=record
DB_USER=root
DB_PASS=XXXXXXXXXXXXX
在app.js
文件中添加数据库连接代码:
const express = require('express');
const mongoose = require('mongoose');
const cors = require('cors');
require('dotenv').config();
const app = express();
// 中间件设置
app.use(cors());
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
// 构建MongoDB连接字符串
const dbHost = process.env.DB_HOST;
const dbPort = process.env.DB_PORT;
const dbName = process.env.DB_NAME;
const dbUser = process.env.DB_USER;
const dbPass = process.env.DB_PASS;
const mongoURI = `mongodb://${dbUser}:${dbPass}@${dbHost}:${dbPort}/${dbName}?authSource=admin`;
// 连接MongoDB数据库:cite[4]:cite[7]
mongoose.connect(mongoURI, {
useNewUrlParser: true,
useUnifiedTopology: true
})
.then(() => {
console.log('成功连接到MongoDB数据库');
})
.catch(err => {
console.error('数据库连接错误:', err);
});
// 其他中间件和路由设置...
4. 定义数据模型
创建一个models
文件夹,并在其中创建User.js
文件:
const mongoose = require('mongoose');
const userSchema = new mongoose.Schema({
name: {
type: String,
required: true
},
phone: {
type: String,
required: true
}
});
module.exports = mongoose.model('User', userSchema);
5. 创建路由和控制器
创建路由文件routes/users.js
:
const express = require('express');
const router = express.Router();
const User = require('../models/User'); // 导入User模型
// 获取所有用户:cite[4]
router.get('/', async (req, res) => {
try {
const users = await User.find({});
res.json(users);
} catch (err) {
res.status(500).json({ message: err.message });
}
});
// 获取单个用户
router.get('/:id', async (req, res) => {
try {
const user = await User.findById(req.params.id);
if (!user) {
return res.status(404).json({ message: '用户未找到' });
}
res.json(user);
} catch (err) {
res.status(500).json({ message: err.message });
}
});
// 创建新用户
router.post('/', async (req, res) => {
const user = new User({
name: req.body.name,
phone: req.body.phone
});
try {
const newUser = await user.save();
res.status(201).json(newUser);
} catch (err) {
res.status(400).json({ message: err.message });
}
});
// 更新用户
router.patch('/:id', async (req, res) => {
try {
const user = await User.findById(req.params.id);
if (!user) {
return res.status(404).json({ message: '用户未找到' });
}
if (req.body.name != null) {
user.name = req.body.name;
}
if (req.body.phone != null) {
user.phone = req.body.phone;
}
const updatedUser = await user.save();
res.json(updatedUser);
} catch (err) {
res.status(400).json({ message: err.message });
}
});
// 删除用户
router.delete('/:id', async (req, res) => {
try {
const user = await User.findById(req.params.id);
if (!user) {
return res.status(404).json({ message: '用户未找到' });
}
await user.remove();
res.json({ message: '用户已删除' });
} catch (err) {
res.status(500).json({ message: err.message });
}
});
module.exports = router;
在app.js
中引入路由:
// 在数据库连接后添加以下代码
const usersRouter = require('./routes/users');
app.use('/users', usersRouter);
6. 测试接口
启动Express应用程序:
npm start
使用浏览器或Postman测试API:
-
GET http://localhost:3000/users
- 获取所有用户 -
GET http://localhost:3000/users/用户ID
- 获取单个用户 -
POST http://localhost:3000/users
- 创建新用户 -
PATCH http://localhost:3000/users/用户ID
- 更新用户 -
DELETE http://localhost:3000/users/用户ID
- 删除用户
7. 部署到服务器(可选)
如果你希望将Node.js应用也部署到服务器上,可以使用PM2等工具管理进程:
# 全局安装PM2
npm install -g pm2
# 使用PM2启动应用
pm2 start ./bin/www --name record-app
# 设置开机自启动
pm2 startup
pm2 save