【Vue3+Express实战-3】实现新增课程接口

使用这个插件之后,我们就可以通过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学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值