我想使用express.static
和serve-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));
答案 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
});