【发布时间】:2013-06-18 09:47:07
【问题描述】:
我有一个用于该路由的“路由特定中间件”链,如下所示:
var express = require('express');
var server = express();
var mw1 = function(req, resp, next) {
//do stuff
if (success) {
next();
} else {
req.connection.destroy(); //without calling next()
}
};
var mw2 = function(req, resp, next) {
//do stuff
if (success) {
next();
} else {
req.connection.destroy(); //without calling next()
}
};
server.post('/some/path', [mw1, mw2], function(req, resp) {
//write response
});
[mw1, mw2] 是特定于路由 /some/path 的中间件。
这与这样的服务器范围的中间件不同:
server.use(mw1);
server.use(mw2);
它适用于所有定义的路由。
现在我的问题是我想退出链条。 IE。如果success 在mw1 中为假,我不希望调用mw2。如果success 在mw2 中为假,我不会不调用路由函数。目前,无论 next() 是否被调用,mw1 和 mw2 似乎都被调用了 - 我不知道为什么。
我该怎么做?
【问题讨论】:
标签: javascript node.js express connect middleware