koa-router内部使用中间件
之前定义路由一般是这么用的:
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(),为什么在这里也能用中间件?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
只要正确处理好
ctx
就行了。koa中间件不是什么神奇的东西,说白了就是下面这个函数1.
router.get
可以接受多个参数,只对该路径生效。2.
app.use()
中间件对所有的路径都生效。https://www.npmjs.com/package/koa-router
中间件,分全局中间件和局部中间件。
app.use() 这是全局的,单个路由使用可以理解为局部的,而且局部还可以这样写