CASE1。。。其中validatebody返回的函数(schemas.authschema(作为中间件执行。。。
router.route("/signup").post(validatebody(schemas.authschema),userscontrollers.signup);
我的第二个文件,它导出验证器的函数和模式。。。
module.exports={
validatebody:function(schema)
{
return function(req,res,next)
{
var result=joi.validate(req.body,schema);
if(result.error)
return res.status(400).json(result.error);
if(!req.value)
req.value={};
req.value['body']=result.value;
next();
}
},
schemas:{
authschema:joi.object().keys(
{
email:joi.string().email().required(),
password:joi.string().required()
})
}
};
现在是第二个案例。。。。在这种情况下,我不输出任何内容,页面会持续加载很长时间,因为函数名称第二个函数从未被调用,next((也从未被触发。。。。但在第一种情况下。。。调用了返回的函数。。
app.get("/users",firstfunction,secondfunction);
function firstfunction()
{
return function(req,res,next)
{
console.log(req);
next();
}
}
function secondfunction(req,res,next)
{
res.send("go there");
}
app.listen(3000);
您正在传入firstfunction
,但没有调用它。您需要执行
app.get("/users",firstfunction(),secondfunction);