创建文章Model和保存文章

Sy_ Lv6

一、准备工作

假设你已经有了这样的MongoDB数据库结构:

image-20250325233457055

其中的文档结构这里给出:

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!"
}
]
}

二、创建文章功能

项目结构:

image-20250326000331953

其中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');
})
  • 标题: 创建文章Model和保存文章
  • 作者: Sy_
  • 创建于 : 2025-06-15 00:51:35
  • 更新于 : 2025-06-15 00:51:35
  • 链接: https://shenying.online//demo/qqr7ryjv/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
创建文章Model和保存文章