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部分有些不同(此处也是我特别要记忆的)
-
express:
从上图可以看到,路径’userinfo‘
后面的匿名函数的参数是req,res
,req
可以获取前端发请求时传过来的数据,res.send({...})
可以将处理后的数据传出去,并且在mysql
操作的时候对res
传输数据是没有影响的 -
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来实现
});