如何在Express中将req.params传递给中间件

时间:2017-11-10 08:35:25

标签: node.js express middleware

我想使用express.staticserve-index Express中间件(https://www.npmjs.com/package/serve-index)投放文件列表页面。我没有硬编码根路径,而是希望根据网址中的ID从数据库中提取它。

中间件可以像这样使用

app.use('/logs/:id', express.static('C:\\log\\root\\dir'), serveIndex('C:\\log\\root\\dir'));

问题是如何将req.params.id传递给中间件。我尝试使用这样的包装函数,但它没有工作:

const mymw = (middleware, id) => {
    const rootDir = getRootDirFromDb(id);
    return middleware(rootDir);
}

app.use('/logs/:id', (req, res) => mymw(express.static, req.params.id), (req, res) => mymw(serveIndex, req.params.id));

1 个答案:

答案 0 :(得分:0)

您可以将中间件定义传递给app.use,并且req对象将在您的中间件中可用。

const mymw = (req, res, next) => {
  // req.params is available here.
  // you can call next() here to move to the next controller
}

app.use('/logs/:id', mymw, (req, res, next) => {
  // also do stuff here
});