有没有童鞋遇到过同样的问题:koa-router内部使用中间件感激不尽

之前定义路由一般是这么用的:
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(),为什么在这里也能用中间件?
蓝山帝景
浏览 291回答 2
2回答

慕桂英4014372

只要正确处理好ctx就行了。koa中间件不是什么神奇的东西,说白了就是下面这个函数functionmiddleware(ctx,next){//处理ctxnext();//继续调用下一个}全局中间件(任何请求都会走进来)路由中间件(匹配请求路径和请求方法才走进来)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript