我不确定这是Mongoose还是Nodejs Express错误?
我只想知道是否有一种以if的形式添加中间件的方法。这是我的电话:
app.post(pPath, auth, (req, res) => {
...
})
我只想做这样的事情:
app.post(pPath, varBoolean ? auth : null, (req, res) => {
...
})
上面的示例虽然无效。知道我该怎么做吗?
答案 0 :(得分:1)
Express方法不支持非函数处理程序。通常这是一件好事,因为它可以在应用程序启动时检测到导入问题。
这可以通过传播来实现:
app.post(...[pPath, varBoolean && auth, (req, res) => {
...
}].filter(Boolean))
答案 1 :(得分:0)
如果要使用中间件,则应尝试使用“ app.use”。
app.use('/path', (req, res, next) => {
const { test } = req.body;
const { auth } = req.headers;
if(!test) {
return res.status(400).json({message: 'Missing field test'});
}
const validToken = await tokenValidation(auth);
if(!validToken){
return res.status(403).json({message: 'Unauthorized'});
}
next();
});