javascript - 在 express 中通过中间件传递参数
问题描述
我在通过几个中间件快速传递参数时遇到问题,这是我的中间件之一:
exports.checkParentReqs=async(req,res,next)=>{
try {
const reqExist = await ParentReqsToConnect.find({ email: req.user.email }).populate({
path: 'userId',
select: 'firstName lastName'
})
req.parentReqs = reqExist
next()
console.log(req.parentReqs)
} catch (error) {
next (new Error (error.message))
}
}
这是包含上述中间件的特定路线中的中间件链:
router
.route('/feed/getFeed')
.post(
AuthController.protect,
AuthController.isStudent,
NewsController.getGoogleNews,
TransactionsForFeedController.getRecentTransactions,
TransactionsForFeedController.totalSpendingLimitsAlert,
TransactionsForFeedController.categorizedSpendingLimitsAlert,
BehavioralItemController.createTaskBihavioral,
BehavioralItemController.createBankBihavioral,
BehavioralItemController.createCompareUniBihavioral,
BehavioralItemController.createConnectionBihavioral,
BehavioralItemController.createPrivBudgetBihavioral,
AlertController.ownUniAlert,
AlertController.uniBudgetAlert,
AlertController.uniBudgetSetPeriodAlert,
AlertController.accountsAlert,
AlertController.connectionAlert,
AlertController.getAlerts,
ParentReqsToConnectController.checkParentReqs,
TaskController.getTasksForFeed,
FeedController.getFeed,
)
倒数第三个在中间件之上。这是最后一个中间件 FeedController.getFeed :
exports.getFeed = async (req, res, next) => {
try {
console.log(req.parentReqs)
const feed = [
...req.tasks,
...req.transactions,
...req.news,
req.privBudgetBehavioral,
req.bankBehavioral,
req.connectionBehavioral,
req.taskBehavioral,
req.compareUniBehavioral,
...req.parentReqs,
...req.alerts
].filter(item => item != null)
res.status(200).json({
status: 'success',
feed
})
} catch (e) {
res.status(401).json({
status: 'failed',
message:e.message
})
}
}
但 req.parentReqs 在 getFeed 函数中不起作用。getFeed 中的 console.log 给了我“未定义”,而 ParentReqsToConnectController.checkParentReqs 中的 req.parentReqs 未定义。似乎不能通过中间件传输
提前感谢您的帮助