1

为什么下面的代码输出为“一”,而不是“一”“二”?但使用 express-route 是可以的

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');
 }
4

1 回答 1

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);
于 2015-08-20T21:56:56.760 回答