使用这个插件之后,我们就可以通过req.body来获取到数据啦!!!
更多细节可以直接访问官网:http://expressjs.com/en/resources/middleware/body-parser.html
const bodyParser = require("body-parser");
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
判断title是否存在
对于一个课程来说,title肯定是必须的,所以我们最开始要先判断title是否存在。直接判断req.body.title存不存在,
if (!req.body.title) {
res.status(400).send({
message: "课程名称不能为空"
});
return;
}
解析数据
创建临时变量存储数据
**const** tutorial = {
title: req.body.title,
description: req.body.description,
published: req.body.published ,
};
保存数据,并响应
在Sequlize中,模型是 Sequelize 的本质. 模型是代表数据库中表的抽象. 在 Sequelize 中,它是一个 Model 的扩展类。通过define定义的模型,会绑定很多方法。例如create方法。
通过模型调用ceeate方法,可以不用写sql,保存数据。
Tutorial.create(tutorial)
.then(data => {
res.send(data);
})
.catch(err => {
res.status(500).send({
message:
err.message || "创建课程出错"
});
});
我们已经有个controller层,可以操作数据库了!但是我们该如何来调用这个controller方法呢?就像是你去走亲戚,你肯定是要先找到亲戚家的大门,然后才能进去,进入之后,才能把带的礼品给亲戚啊!这个门,在Express中,我们称之为路由!
在Express的官方文档中,你可以看到,这样的定义路由的方式。这里的斜杠就相当于门,前台访问“/”这扇门,会调用后面的方法。
app.get('/', function (req, res) {
res.send('root');
});
所以说,我们想要访问create方法,必须定义一个create路由。
那么我们是不是可以这样写。
const tutorials = require("../controllers/tutorial.controller.js");
app.get('/create', tutorials.create(req,res));
但是我们这样写会带来另一个问题,假设我们有一个学生模型,他也有一个create接口,下面这样写是不是会直接冲突。
app.get('/create', tutorials.create(req,res));
app.get('/create', student.create(req,res));
所以我们需要加上一个前缀来区分
app.get('/tutorials/create', tutorials.create(req,res));
app.get('/tutorials/create', student.create(req,res));
当然了,这种方法还不是最优雅的,Express给我们提供了 express.Router
类来创建可安装的模块化路由处理程序。也就是按模块来定义路由。
这样的话,我们的代码就可以修改成:
module.exports = app => {
const tutorials = require("../controllers/tutorial.controller.js");
var router = require("express").Router();
router.post("/", tutorials.create);
app.use('/api/tutorials', router);
}
其实前端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。
这里再分享一个复习的路线:(以下体系的复习资料是我从各路大佬收集整理好的)
《前端开发四大模块核心知识笔记》
![](https://img-blog.csdnimg.cn/img_convert/b6ecb2c71421efff2a0cd1db5a9d4251.png)
最后,说个题外话,我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在IT学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。