之前定义路由一般是这么用的:router.get('/',function(ctx,next){ctx.body='hellohello';})最近看到了一种用法,在方法参数中加入了一个中间件:router.get('/',(ctx,next)=>{returnUser.findOne(ctx.params.id).then(function(user){ctx.user=user;next();});},ctx=>{console.log(ctx.user);//=>{id:17,name:"Alex"}});为什么能这样用,难道说router.get的方法定义不是死的吗?如何做到中间可以支持中间件的吗?另外中间件的注册不是一般都是app.use(),为什么在这里也能用中间件?
2 回答
慕桂英4014372
TA贡献1871条经验 获得超13个赞
只要正确处理好ctx就行了。koa中间件不是什么神奇的东西,说白了就是下面这个函数functionmiddleware(ctx,next){//处理ctxnext();//继续调用下一个}全局中间件(任何请求都会走进来)路由中间件(匹配请求路径和请求方法才走进来)
添加回答
举报
0/150
提交
取消