使用next()传递变量

时间:2014-04-03 08:45:44

标签: node.js

在node.js中,我有一个函数,在任何操作检查请求开始时是否一切正常(验证JSON等)之前。几乎一切都运转正常,但我有一个问题。我现在不知道如何使用next();

传递对象引用

使用。来调用检查功能。

app.all('/:action', frontendProcessor.checkSession());

在此代码的中间,我使用了next()

frontendProcessor.checkSession = function(){

  return function(req, res, next) {

    var inputJson   = req.body.JSONVAR || false,
        action      = req.params.action;

    // validation   
    frontendProcessor.validateJSON(inputJson, afterValidation);

    function afterValidation(err, inputData){       
      if(err) {
        global.consoleLog(err);
        res.send(fail);
      }else{
        if(action == 'login' ){ 
          console.log(inputData);
          next(inputData); //<< here, how to pass inputData thru next
        }else{
          mUsers.checkSessionId(email, sessionId, process);
        };      
      };        
    };

    function process(response) {        
      if(!response){
        global.consoleLog("Security Error: Bad session Id.");
        var response = JSON.stringify(badSession);
        res.send(response);
      }else{
        global.consoleLog('Security: session ok! next');
        next(inputData);
      };
    };

  };

};

1 个答案:

答案 0 :(得分:1)

next()不应该传递数据,因为它只是为了调用下一个请求处理程序,而不是特定的请求处理程序。 Nirk的评论是正确的,您应该将数据附加到req对象,并在需要时从那里读取。