2017-11-10 8 views
0

express.staticserve-index Expressミドルウェア(https://www.npmjs.com/package/serve-index)を使用してファイル一覧ページを提供したいと思います。ルートパスをハードコーディングする代わりに、URLのIDに基づいてデータベースからフェッチすることができます。質問はミドルウェアにreq.params.idを渡す方法です Expressでミドルウェアにreq.paramsを渡す方法

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

この

よう

ミドルウェアを使用することができます。私はこのようなラッパー関数を試してみましたが、それはうまくいきませんでした:

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

あなたは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 
}); 
+0

はい、私はそれがそこからルートパスを読んではなく、このようにしていない自分のミドルウェアでreq.paramsからものを読み取ることが可能だが、 'サーブ-index'または' express.static'ことを理解: 'serveIndex(rootPath)'です。それはどういうわけか 'next()'でパラメータを渡すことができますか?これをどうやって得ることができますか? –

関連する問題