Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongoose将If添加到中间件_Javascript_Node.js_Callback - Fatal编程技术网

Javascript Mongoose将If添加到中间件

Javascript Mongoose将If添加到中间件,javascript,node.js,callback,Javascript,Node.js,Callback,我不确定这是Mongoose还是Nodejs Express错误 我只是想知道是否有一种方法可以以if的形式添加中间件。这是我的电话: app.post(pPath, auth, (req, res) => { ... }) 我只想这样做: app.post(pPath, varBoolean ? auth : null, (req, res) => { ... }) 不过,上面的示例不起作用。你知道我该怎么做吗?如果你想有一个合适的中间件,你应该尝试使用“app

我不确定这是Mongoose还是Nodejs Express错误

我只是想知道是否有一种方法可以以if的形式添加中间件。这是我的电话:

app.post(pPath, auth, (req, res) => {
    ...
})
我只想这样做:

app.post(pPath, varBoolean ? auth : null, (req, res) => {
    ...
})

不过,上面的示例不起作用。你知道我该怎么做吗?

如果你想有一个合适的中间件,你应该尝试使用“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();
});

Express方法不支持非函数处理程序。这通常是一件好事,因为这样可以在应用程序启动时检测导入的问题

这可以通过以下方式实现:

app.post(...[pPath, varBoolean && auth, (req, res) => {
    ...
}].filter(Boolean))

这对男人来说非常有效。太疯狂了,哈哈,我还不太明白它是干什么的。做得好!。。。谢谢你对处理程序的解释!不客气,它会从参数列表中过滤掉falsy值(
varBoolean
,如果是falsy)。它类似于if(varBoolean)app.post(pPath,auth,(req,res)=>…)else-app.post(pPath,(req,res)=>…),我想这就是你想要的。