一、准备工作
假设你已经有了这样的MongoDB
数据库结构:

其中的文档结构这里给出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| { "_id": { "$oid": "67e2cb68f52099d0cb41f2b0" }, "title": "mongodb 入门教程", "author": { "name": "Sy", "avatar": "https://shenying.online" }, "createdAt": "2025-3-25", "content": "Mongodb 是文档存储结构的数据库", "comments": [ { "user": "小明", "comment": "真不错" }, { "user": "toby", "comment": "wow!" } ] }
|
二、创建文章功能
项目结构:

其中routes
书写我们的路由,并将其注册到app.js
。
我们重点来看models/post.js
中的设计:
1 2 3 4 5 6 7 8 9 10 11
| const postCollection = require("../config/mongoDbConnection").getCollection("postCollection");
exports.save = async(post) => { try { const col = await postCollection(); const result = await col.insertOne(post) return result.ops && result.ops[0]; } catch (err) { throw "添加到文章出错" } }
|
可以看到,我们在这里定义了一个文章模型的添加方法,这种设计就是MVC
模式,将模型,数据,操作器分离开来。
在routes/post.js
中,我们注册了文章的添加路由:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| const postModel = require('../models/post') const router = require('express').Router();
router.post('/add', async (req, res) => { try { const newPost = await postModel.save(req.body); res.send(newPost) } catch (err) { console.error(err); res.status(500).send(); } })
module.exports = router;
|
最后在app.js
中注册路由即可,这里还是贴出代码照顾下新手:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| const express = require('express') const app = express();
app.use(express.json()) app.use('/api/post', require('./routes/post'))
app.get('/', (req, res) => { res.send({ code: 200, msg: `It's OK!` }) })
app.listen(3000, () => { console.log('运行在: http://localhost:3000'); })
|