Node.js 将中间件应用于Express中的路由

Node.js 将中间件应用于Express中的路由,node.js,express,routes,Node.js,Express,Routes,我希望将中间件应用于路由,而不管请求的类型如何。目前我有: router.route('/campaigns') .get(restrictTo('advertiser'), restrictTo('admin'), queries.getCampaigns) .post(restrictTo('advertiser'), restrictTo('admin'), queries.createCampaign); 我想要的是: router.route('/campaigns'

我希望将中间件应用于路由,而不管请求的类型如何。目前我有:

router.route('/campaigns')
    .get(restrictTo('advertiser'), restrictTo('admin'), queries.getCampaigns)
    .post(restrictTo('advertiser'), restrictTo('admin'), queries.createCampaign);
我想要的是:

router.route('/campaigns', restrictTo('advertiser'), restrictTo('admin'))
    .get(queries.getCampaigns)
    .post(queries.createCampaign);

但是这似乎不起作用。

您应该能够像这样使用
。use()

router.route('/campaigns')
  .use(restrictTo('advertiser'), restrictTo('admin'))
  .get(queries.getCampaigns)
  .post(queries.createCampaign);
或:

您可以使用
.all()

例如:

 router.route('/campaigns')
      .all(yourmiddleware)
      .get(function (req, res, next) {
            // your function ...
      }) 

这对我很有用。

express文档中说,您可以这样做:

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()
})
/user/:id
替换为所需路径

来源:

应为
.all()
。use()
仅适用于路由器整体,而不适用于单个路由。
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()
})