node后端关于express与koa学习操作mysql写接口小结

2 篇文章 0 订阅
1 篇文章 0 订阅

express与koa学习小结

express创建部分

该部分我是通过webstorm里的项目直接创建的,步骤如下:

在这里插入图片描述
在这里插入图片描述
创建成功后的目录结构:
在这里插入图片描述

koa创建部分

1.npm i -g koa-generator//一个koa项目的创建工具,脚手架之类的
//使用koa-generator创建koa2项目
2.koa2 test项目名
cd test
npm i

生成的目录结构与上面相同

初步体验学习了这两个后,有点要记的

1.数据库连接部分差不多相同
2.route部分有些不同(此处也是我特别要记忆的)

  1. express:在这里插入图片描述
    从上图可以看到,路径’userinfo‘后面的匿名函数的参数是req,resreq可以获取前端发请求时传过来的数据,res.send({...})可以将处理后的数据传出去,并且在mysql操作的时候对res传输数据是没有影响的

  2. koa部分
    在这里插入图片描述
    注意,这个写法就开始不同了,’userinfo‘后面的匿名函数的参数变量,不要以为只是换了个名字而已,前端请求的参数在ctx.request.body里面,而且后端处理后的数据要通过ctx.body传输出去;但是在这里最初我是按照express里的操作数据库相同,这就出问题了,运行后发现 👇
    在这里插入图片描述
    情况就是,数据库连接成功,查询数据成功,postman请求404,

后面多方查询是因为我的数据库查询时是异步的,导致我的接口请求时已经在数据库操作时请求了就出了问题,后面我决定怕数据库操作的部分封装一下

在这里插入图片描述
这就是为什么koa里的route里会有async和await 以及getSqlResult();

为什么会有getSqlResult的这个函数产生,因为之前的数据库操作是这样的:

connection.query('select * from userinfo where username = "x"',(err,result,fields)=>{
    if(err){
      res.send({code:1,msg:'没有'});
      console.log('err',err);
      return;
    }
    res.send({code:0,data:result});
    console.log(result);
    //想把result,也就是操作后的结果return出去,无法实现所以就有了封装的getSqlResult并通过promise来实现
  });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值