在节点中使用带有expressjs的javascript范围的正确方法

时间:2017-05-22 19:01:36

标签: javascript node.js express scope function-parameter

我正在尝试学习JavaScript和全栈开发,而且我不能完全理解如何正确地使用JavaScript来实现....

我的问题是这样的:

在网上看到的每个教程中都使用了以下语法:

app.get('/',function(request,response,next){

 var something = request.body.something;
 if(something){do stuff...}
 else{do other stuff...}

})

如果我不想使用匿名函数但预定义的命名函数会怎样?

我如何在快递方法中使用它们?

像这样的东西会是o.k吗? :

function doStuffwithTheRequest(request,response,next){

 var something = request.body.something;
 if(something){do stuff...}
 else{do other stuff...}

};


app.get('/',doStuffwithTheRequest(req,res,next));

如果是这样,以这种方式传递参数的正确方法是什么?

我试过像这样的编码但是我似乎无法在预定义时将参数传递给函数...

我得到了上述问题的答案,但我想查看问题的附加内容......

我将如何从这样的内容中取出内部回调函数:

function doStuffwithTheRequest(req,res,next){

 Somemiddleware.someMethod({parameter:req.session.value},function(err,returningparameter){

 res.locals.info = returningparameter;
 if(something){do stuff...}
 else{do other stuff...}

 })
};

app.get('/',doStuffwithTheRequest);

一旦我把它拿出来就会抛出错误:

res未定义

1 个答案:

答案 0 :(得分:1)

你正在这样做,你正在调用没有参数的命名函数。你应该只传递函数:

app.get('/',doStuffwithTheRequest);

确保函数定义具有正确的参数(req,res,next),它在您的示例中执行。

相关问题