【发布时间】:2015-08-25 13:36:02
【问题描述】:
请问有没有办法在KOA中停止中间件管道的执行?
在下面的示例中,我有一个可以以某种方式验证某些内容的中间件。验证失败时如何重新编码中间件以停止执行?
var koa = require('koa');
var router = require('koa-router')();
var app = koa();
app.use(router.routes());
// middleware
app.use(function *(next){
var valid = false;
if (!valid){
console.log('entered validation')
this.body = "error"
return this.body; // how to stop the execution in here
}
});
// route
router.get('/', function *(next){
yield next;
this.body = "should not enter here";
});
app.listen(3000);
我实际上可以改变我的路线:
router.get('/', function *(next){
yield next;
if(this.body !== "error")
this.body = "should not enter here";
});
但是有更好的方法吗?还是我遗漏了什么?
这只是一个例子,实际上我的中间件可能会放置一个属性 在正文中(this.body.hasErrors = true),路线将从 那个。
再一次,我怎样才能在我的中间件中停止执行,这样我的路由就不会被执行?在 Express 中,我认为您可以做一个 response.end(虽然不确定)。
【问题讨论】:
标签: node.js generator middleware koa