Javascript 在expressjs中使用可选中间件

Javascript 在expressjs中使用可选中间件,javascript,node.js,express,Javascript,Node.js,Express,我想知道在Express routes中使用可选中间件的情况如下: router.post("/findAvailableAgents", middleware1 || middleware2, (req, res)) 现在,您可以使用下面的代码添加多个中间件 app.get('/',[middleware.requireAuthentication,middleware.logger],函数(req,res){ res.send('Hello!'); });您可以使用另一个中间件来决定是选

我想知道在Express routes中使用可选中间件的情况如下:

router.post("/findAvailableAgents", middleware1 || middleware2, (req, res))

现在,您可以使用下面的代码添加多个中间件

app.get('/',[middleware.requireAuthentication,middleware.logger],函数(req,res){
res.send('Hello!');
});您可以使用另一个中间件来决定是选择middleware1还是middleware2

并在代码中使用它

router.post("/findAvailableAgents", decideMiddleware, (req, res))

有两种实现可选中间件行为的方法:

1) 创建另一个中间件,该中间件检查条件,然后将所有参数传递到所需的中间件中。例如:

const middlewareStrategy = (req,res,next) => {
    if(req.body.token1){
        return middleware1(req,res,next);
    }
    return middleware2(req,res,next);
};

router.post("/findAvailableAgents", middlewareStrategy, handler);
2) 以条件驱动的方式执行中间件逻辑。例如:

const middleware1 = (req,res,next) => {
    if(req.body.token){
        // execute some logic, then
        return next();
    }
    // skip this middleware
    next();
};

router.post("/findAvailableAgents", middleware1, middleware2, handler);

您如何确定是否需要使用middleware1或middleware2?您可以对中间件3进行编码以使用其中一种吗?我根据随请求发送的令牌确定middleware1或middleware2。如果令牌有效,则允许请求通过else reject request。@Moak,您建议我怎么做?它不起作用。也许我应该更清楚地回答我的问题。我需要使用任何一种中间件来处理请求。get('/',middleware1,middleware2,函数(req,res){res.send('Hello!');});我们有两个中间商。现在,将结果从中间件1传递到中间件2。reference:@DaveKaluNo,我不需要将请求传递给下一个中间件。如果请求有效,我需要拒绝或解决该请求。这就是为什么我认为“或”操作符可以工作的原因。
const middleware1 = (req,res,next) => {
    if(req.body.token){
        // execute some logic, then
        return next();
    }
    // skip this middleware
    next();
};

router.post("/findAvailableAgents", middleware1, middleware2, handler);