node.js - 如何将参数传递给中间件的构造函数?
问题描述
假设我想这样做:
app.use('/user/login', require('./routes/user.route.js')(variable));
我不能,因为我会得到:
TypeError:Router.use() 需要一个中间件函数,但有一个未定义的
如何传递variable
给user.route
构造函数?
解决方案
在您的user.route.js
中,您需要导出如下内容:
module.exports = function (variable) {
return (req, res, next) => {
// your middleware
next()
}
}
或者使用currying(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
}
推荐阅读
- javascript - 调用 Web API - 无法读取未定义的属性“过滤器”
- java - 二叉树:按升序打印数据
- android - 在 Android Studio 中强制编写文档
- c# - 如何使用 selenium C# 右键单击图像并复制图像地址?
- javascript - HighChart 跳过第一点:Highcharts, Javascript
- sql-server - Microsoft SQL Server 只需要查询中的最高结果
- android - 如何在android上将保存的位图作为文件访问?
- r - 如何匹配多个结尾字符?
- json - REST (JSON) - 检查日期是否在两个日期之间
- ios - Fastlane 不断警告我正在使用 Ruby 2.2.4