node.js - 根据请求参数 express 有条件地使用中间件

标签 node.js express

我正在尝试根据请求查询参数来决定要使用的中间件。

在主模块中我有这样的东西:

app.use(function(req, res){
  if (req.query.something) {
    // pass req, res to middleware_a
  } else {
    // pass req, res to middleware_b
  }
});

middleware_amiddleware_b 都是 express 应用程序 本身由 express() 函数创建,而不是常规的中间件函数(函数(req, res, next))

找不到办法

最佳答案

connect/express“中间件”没有什么神奇之处:它们只是函数——你可以像调用任何其他函数一样调用它们。

所以在你的例子中:

app.use(function(req, res, next){
  if (req.query.something) {
    middlewareA(req, res, next);
  } else {
    middlewareB(req, res, next);
  }
});

也就是说,可能有更优雅的方式来构建分层 express 应用程序。查看 TJ's video

关于node.js - 根据请求参数 express 有条件地使用中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21271492/

相关文章:

node.js - 将生成的 PNG 从 lambda 上的 Node 上传到亚马逊 S3

node.js - 从 heroku 中删除 'server' 和 'via' header ?

javascript - Passport 出现 CORS 错误 LinkedIn 策略

javascript - 使用 express 将 css 包含到 html

node.js - 仅在 Mongoose 中选择子文档数组列表

mysql - 将 Twilio 日期时间格式转换为 mysql

node.js - 在 Node 模块中搜索包含 with 语句的 javascript 文件?

javascript - 当我的函数完成时,使用 JavaScript(或 jQuery)触发自定义事件

node.js - NodeJS 中监听 HTTP 和 HTTPS 的正确方法

node.js - 何时在 docker 中将 localhost 替换为服务名称?