Node.js 环境下配置后端的攻略步骤:
API:
- 安装 Apifox 工具,用于创建和管理接口文档。
- 分析需求,确定需要多少个接口以及接口的类型(GET、POST、PUT、DELETE 等)。
- 在 Apifox 中创建接口文档,包括接口的 URL、请求参数、响应数据等详细信息。
服务器:
- 安装 Node.js:下载并安装 Node.js 运行时环境。
node -v
这个命令在cmd中将显示Node.js的版本号 - 安装和配置 MongoDB:下载并安装 MongoDB 数据库,并启动 MongoDB 服务。
- 创建项目文件夹:在命令行中创建一个项目文件夹。
npm init -y
初始化项目并创建package.json
文件 - 在命令行中使用适合的包管理器(如 npm 或 yarn)安装 Express 和 Mongoose,这些是常用的 Node.js 框架和 MongoDB 的 ORM。
npm install express
安装expressnpm install mongoose
安装mongoose - 创建一个配置文件:在项目文件夹中创建一个配置文件,例如
xxx.js
,并在该文件中导入 Express、path 和 Mongoose 模块,并导入数据模型。node
进入node环境.save xxx.js
创建js文件
// 导入模块
const express = require("express");
const path = require("path");
const mongoose = require("mongoose");
const User = require("User")
- 在配置文件中,创建一个 Express 应用实例并声明端口号。
// 导出express模块和定义端口号
const app = express();
const port = 3000;
- 使用 Mongoose 的
connect
方法连接到 MongoDB 数据库。
// 链接MongoDB数据库
mongoose.connect("mongodb://localhost:27017/mydb", {
useNewUrlParser: true,
useUnifiedTopology: true,
});
const db = mongoose.connection;
db.on("error", (err) => {
console.error("MongoDB 链接失败:", err);
});
db.once("open", () => {
console.log("成功链接到 MongoDB 数据库");
});
- 配置静态文件中间件:使用 Express 的
use
方法在应用中添加静态文件中间件,以便向客户端提供静态文件(如图片、CSS 文件等)。
// 拼接静态文件路径和解析请求的JSON数据
app.use(express.static(path.join(__dirname, "pet2")));
app.use(express.json());
- 定义路由:使用 Express 的路由方法(如
get
、post
、patch
、delete
等)定义路由处理程序,处理来自客户端的请求,并执行相应的操作(如数据库查询、数据修改等)。
// 主页路由
app.get("/", (req, res) => {
res.sendFile(path.join(__dirname, "pet2", "index.html"));
});
// 创建用户路由
app.post('/users', async (req, res) => {
try {
const { account, password } = req.body;
const user = new User({ account, password });
await user.save();
res.status(201).json(user);
} catch (err) {
res.status(400).json({ message: err.message });
}
});
// 获取所有用户路由
app.get('/users', async (req, res) => {
try {
const users = await User.find();
res.json(users);
} catch (err) {
res.status(500).json({ message: err.message });
}
});
// 获取单个用户路由
app.get('/users/:id', getUser, (req, res) => {
res.json(res.user);
});
// 更新用户路由
app.patch('/users/:id', getUser, async (req, res) => {
if (req.body.account) {
res.user.account = req.body.account;
}
if (req.body.password) {
res.user.password = req.body.password;
}
try {
const updatedUser = await res.user.save();
res.json(updatedUser);
} catch (err) {
res.status(400).json({ message: err.message });
}
});
// 删除用户路由
app.delete('/users/:id', getUser, async (req, res) => {
try {
await res.user.remove();
res.json({ message: 'User deleted' });
} catch (err) {
res.status(500).json({ message: err.message });
}
});
- 配置中间件:根据需要,可以使用 Express 中间件处理特定请求或执行某些操作。例如,可以创建一个中间件函数用于获取单个用户信息,并在路由处理程序中使用该中间件。
// 中间件 - 获取单个用户
async function getUser(req, res, next) {
try {
const user = await User.findById(req.params.id);
if (!user) {
return res.status(404).json({ message: 'User not found' });
}
res.user = user;
next();
} catch (err) {
return res.status(500).json({ message: err.message });
}
}
- 配置错误处理中间件:使用 Express 的错误处理中间件来处理应用中的错误,例如 404 错误或服务器错误。
// 404 错误处理中间件
app.use((req, res, next) => {
res.status(404).sendFile(path.join(__dirname, "pet2", "404.html"));
});
// 服务器错误处理中间件
app.use((err, req, res, next) => {
console.error(err.stack);
res.status(500).send("Internal Server Error");
});
- 在额外的 JavaScript 文件中,使用 Mongoose 定义数据模型,以便在应用中操作和访问数据库中的数据。
// 导入mongoose
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
// 使用Schema方法创建数据模型
const userSchema = new Schema({
account: {
// 类型:字符串
type: String,
// 必须:真
required: true
},
password: {
type: String,
required: true
}
});
// 创建用户模型并导出
const User = mongoose.model('User', userSchema);
module.exports = User;
- 运行程序
node xxx.js
app.listen(port, () => {
console.log(`应用程序正在监听端口 ${port}`);
});
数据库:
- 打开 MongoDB Compass(或使用命令行工具),新建一个数据库,并提供一个名称。
- 使用 JavaScript 编写数据集合的定义,将数据集合的字段、数据类型和约束条件保存到一个对象中,并将该对象封装为一个 JSON 对象。
- 使用 MongoDB 命令或 Compass 工具将数据集合导入到数据库中。