为什么以下代码输出为'一个'而不是'一个' ' 2&#39 ;?但使用快递路线是好的
app.use(route.get('/admin',requiredUser,index));
function *requiredUser(next){
console.log("one"); //required session
yield next;
}
function *index(next) {
console.log("two"); //ok save login
this.body = yield render('admin');
}
答案 0 :(得分:1)
koa-route只需要一个处理程序 - 无论你给它的第二个参数。这就是为什么它只执行你的第一个处理程序。
您可以使用https://github.com/koajs/compose将一组处理程序合并为一个:
var compose = require('koa-compose');
app.use(route.get('/', compose([requiredUser, index])));
或者您可以使用其他路由库,例如https://github.com/alexmingoia/koa-router,它具有您最初期望从koa-route行为的行为:
var app = require('koa')();
var router = require('koa-router')();
router.get('/', requiredUser, index);
app.use(router.routes());
app.listen(3000);