Mic*_*ček 4 middleware flow-control node.js express
我目前正在使用formBuilder(客户端javascript <=> JSON <=>节点),所以我需要有效的方法来处理服务器上的JSON数据.所有表单都绑定在一条路由上,由中间件捕获,所以我需要这样的东西:
代码被简化(没有正则表达式,请求验证器等...)
var middleware = require('../middleware'); // simple dir to object export
exports = module.exports =function(req,res,next) {
if(req.xhr && req.is('application/json')) {
var i, items = req.body.events.length;
for(i = 0; i < items; i++) {
var event = req.body.events[i];
if(middleware.forms[event] {
// -----------------
and here add that middleware into current flow ..
// -----------------
}
}
} else {
return next();
}
Run Code Online (Sandbox Code Playgroud)
最简单的方法是准备中间件列表,将使用它并在最终路由中调用它们async ..但我不认为这是好方法..
那么,我有没有办法将所请求的middlware添加到当前流程,但在filan路由之前?
中间件只是功能.所以只要打电话就没有错.上周我遇到了同样的问题,我写了一个小帮手.
var walkSubstack = function (stack, req, res, next) {
if (typeof stack === 'function') {
stack = [stack];
}
var walkStack = function (i, err) {
if (err) {
return next(err);
}
if (i >= stack.length) {
return next();
}
stack[i](req, res, walkStack.bind(null, i + 1));
};
walkStack(0);
};
Run Code Online (Sandbox Code Playgroud)
您可以将它与数组或仅一个函数一起使用.
walkSubstack(middleware, req, res, next);
//or
walkSubstack([middleware, middleware], req, res, next);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1661 次 |
| 最近记录: |