2015-08-05 3 views
1

Почему ниже код выводится как 'один', а не 'один' 'два'? но с использованием экспресс-маршрута в порядкеkoa-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'); 
} 

ответ

1

koa-route берет только один обработчик - все, что вы даете его 2-му аргументу. Вот почему он выполняет только ваш первый обработчик.

Вы можете использовать https://github.com/koajs/compose объединить массив обработчиков в одном:

var compose = require('koa-compose'); 

app.use(route.get('/', compose([requiredUser, index]))); 

Или вы можете использовать другую библиотеку маршрутизации как https://github.com/alexmingoia/koa-router, которая имеет поведение, которое вы первоначально ожидаемых от коа маршрута:

var app = require('koa')(); 
var router = require('koa-router')(); 

router.get('/', requiredUser, index); 

app.use(router.routes()); 
app.listen(3000);