之前定义路由一般是这么用的:
router.get('/',function(ctx,next){
ctx.body='hello hello';
})
最近看到了一种用法,在方法参数中加入了一个中间件:
router.get(
'/',
(ctx, next) => {
return User.findOne(ctx.params.id).then(function(user) {
ctx.user = user;
next();
});
},
ctx => {
console.log(ctx.user);
// => { id: 17, name: "Alex" }
}
);
为什么能这样用, 难道说router.get的方法定义不是死的吗?如何做到中间可以支持中间件的吗?
另外中间件的注册不是一般都是app.use(),为什么在这里也能用中间件?
只要正确处理好
ctx
就行了。koa中间件不是什么神奇的东西,说白了就是下面这个函数