2017-02-15 7 views
2

を使用すると、このような2つのミドルウェアの機能を使用する方法はあります:つのポストで2つのミドルウェア機能

route.post('/login', auth.isAuthenticated, multer.any(), function(req,res) { 
    res.send("bla bla bla"); 
} 

は、私は(ファイルをアップロードするための)auth.isAuthenticatedmulter.any()の両方を使用することはできますか?あなたはdocsに応じて次のように実行しているしたいと思いますミドルウェアのコールバックの配列を渡すことができるはず

答えて

3

http://expressjs.com/en/4x/api.html#router.METHOD

router.METHOD(パス、[コールバック、 ...]コールバック)

route.post('/login', [auth.isAuthenticated, multer.any()], function(req, res) { 
    res.send("bla bla bla"); 
}); 

アップデート:あなたはすべてのコールバックが配列カッコ[]内にある場所を構築する必要があるかもしれません

route.post('/login', [auth.isAuthenticated, multer.any(), function(req, res) { 
    res.send("bla bla bla"); 
}]); 

またそうのようなコールバックを登録するapp.use()を使用することを検討できます。うまくいけば

var route = express.Router(); 

var require = require('multer'); 
var upload = multer({ dest: '/some/path' }); 

route.use(auth.isAuthenticated); 
route.use(upload.any()); 

app.use("/login", route); 

それは助ける!

+0

ミドルウェアを1つのルートにのみ使用したい場合はどうすればよいですか?私はそれをroute.use(auth.isAuthenticated)を使って処理できますか?つまり、私のルートはすべてそのミドルウェアに接続されるか、それとも違うのですか? –

+0

あなたは正しいですが、 '.use()'は** all ** HTTP動詞になりますので、特定の状況では理想的ではないかもしれません。 "/ login"の経路にのみ適用される方法を示すために私の答えを更新しました。私が提供した例は、 'use()'を使うときは、ルート "/ login"のすべてのHTTP動詞になります。ありがとう! –

+0

非常によく感謝 –

関連する問題