如何将参数传递给中间件的构造函数?

时间:2019-03-05 12:16:11

标签: node.js express

假设我要这样做:

app.use('/user/login', require('./routes/user.route.js')(variable));

我不能,因为我会得到:

  

TypeError:Router.use()需要一个中间件功能,但未定义

如何将variable传递给user.route构造函数?

1 个答案:

答案 0 :(得分:2)

在您的user.route.js中,您需要导出以下内容:

module.exports = function (variable) {
    return (req, res, next) => {
        // your middleware
        next()
    }
}

或带有冒号(https://wsvincent.com/javascript-currying/):

module.exports = variable => (req, res, next) => {
   const myUsedVariable = variable + 1
   res.send(myUsedVariable)
}

如果您使用的是express.Router:

var express = require('express')
var router = express.Router()

router.get('/', function(req, res) {
  res.send('Birds home page')
})

module.exports = variable => {
   // do something with your variable
   router.use(function displayVariable(req, res, next) {
      console.log(variable)
      next()
   })

   return router
}