2016-03-03 68 views
1

在express.js当我们调用如何在类似节点的javascript函数中接收默认参数或表示HTTP函数?

app.get(function(req,res){...}), 

功能自动接收请求和响应对象,我们可以给任何名称的功能参数,如REQ,资源或重新,RS等等。

我想创建一个函数,它将停留在一个对象中。 当我想使用这个函数时,它必须接收默认参数,例如简单的int 4,3,我必须能够根据我的选择指定参数名称。并且这些参数必须分配给我定义的参数名称,而我必须能够在函数内的代码中使用这些名称。

我该如何做到这一点?

回答

0

我已经找到了自己的解决方案。

这一切都与回调函数和将函数定义传递给另一个函数有关。

var app={ 
     get:function(callback){ 
      callback('Request object..','Response object..'); 
     } 
    }; 

    app.get(function(rq,rs){ 
     console.log(rq,rs); 
    }); 

在这里,我们可以在get方法传递函数的定义与你自己的选择,这就是我想知道的参数。

它不一定是表达对象或方法。 应用程序可以是任何对象,并可以是任何应用程序的方法。 当然,参数不一定是req和res对象。

1

您可以为此编写自己的中间件。例如,这是我如何控制必填字段的请求:

router.post('/relations', controlBodyMiddleware(['userIdReceiver']), relation.create); 

虽然你可以有方法是这样的:

controlQueryMiddleware(fields) { 
     return function(req, res, next){ 
      if (!req.body.mandatoryField || req.body.mandatoryField !== 5){ 
       return next(new Error('I want mandatoryField equal to 5')); 
      } 

      req.body.myFieldAccessibleInNextMiddleware = 'Yes, this would be there'; 
      next(); 
     }; 
    } 
+0

我不想用express或node的上述问题的解决方案。我想用简单的javascript解决问题。 – Siddharth

+0

@Siddharth - javascript本身就是编程语言。这意味着,它需要编译器,它编译并在某些情况下运行它。没有编译器(如Node.js),没有可执行代码。 – libik