Reputation: 1434
I would like to apply a middleware to a route regardless of the type of request. Currently I have:
router.route('/campaigns')
.get(restrictTo('advertiser'), restrictTo('admin'), queries.getCampaigns)
.post(restrictTo('advertiser'), restrictTo('admin'), queries.createCampaign);
And I would like something like:
router.route('/campaigns', restrictTo('advertiser'), restrictTo('admin'))
.get(queries.getCampaigns)
.post(queries.createCampaign);
But this does not seem to work.
Upvotes: 2
Views: 3619
Reputation: 54
The express documentation says that you can do it like that :
app.use('/user/:id', function (req, res, next) {
console.log('Request URL:', req.originalUrl)
next()
}, function (req, res, next) {
console.log('Request Type:', req.method)
next()
})
Replace the /user/:id
to you desired path.
Source : https://expressjs.com/en/guide/using-middleware.html
Upvotes: 1
Reputation: 111
You can use .all()
Example:
router.route('/campaigns')
.all(yourmiddleware)
.get(function (req, res, next) {
// your function ...
})
It worked for me.
Upvotes: 3
Reputation: 106698
You should be able to just use .use()
like so:
router.route('/campaigns')
.use(restrictTo('advertiser'), restrictTo('admin'))
.get(queries.getCampaigns)
.post(queries.createCampaign);
or:
router.route('/campaigns')
.use(restrictTo('advertiser'))
.use(restrictTo('admin'))
.get(queries.getCampaigns)
.post(queries.createCampaign);
Upvotes: 0