gpt4 book ai didi

node.js - nodeJS (express,connect) - 在当前流中动态添加中间件

转载 作者:搜寻专家 更新时间:2023-10-31 23:01:06 25 4
gpt4 key购买 nike

我目前正在开发 formBuilder(客户端 javascript <=> JSON <=> Node ),所以我需要有效的方法来处理服务器上的 JSON 数据。所有表单都绑定(bind)在一条路线上,由中间件捕获,所以我需要这样的东西:

代码已简化(没有正则表达式、请求验证器等......)

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();
}

最简单的方法是准备中间件列表,这些中间件将在最终路由女巫异步中使用和调用它们..但我不认为这是好方法..

那么,我有什么方法可以将请求的中间件添加到当前流程中,但在 filan 路由之前?

最佳答案

中间件只是函数。所以调用他们没有错。上周我遇到了同样的问题,我写了一个小 helper 。

 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);

};

您可以将它与数组一起使用,也可以仅与一个函数一起使用。

walkSubstack(middleware, req, res, next);
//or
walkSubstack([middleware, middleware], req, res, next);

关于node.js - nodeJS (express,connect) - 在当前流中动态添加中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11709865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com