【问题标题】:How to pass argument to constructor for middleware?如何将参数传递给中间件的构造函数?
【发布时间】:2019-03-05 12:16:10
【问题描述】:

假设我想这样做:

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

我不能,因为我会得到:

TypeError: Router.use() 需要一个中间件函数,但有一个未定义

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

【问题讨论】:

    标签: node.js express


    【解决方案1】:

    在您的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
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 1970-01-01
    • 1970-01-01
    • 2013-02-19
    相关资源
    最近更新 更多