2015-10-27 38 views
1

這是一個很好地響應HTTP調用我的第一種方法:如何在內部調用快速導出方法?

exports.create = function(req, res, next){ 
    var submission = new task(req.body); 

    submission.save(function(err){ 
    if(err){ 
     return next(err); 
    } else { 
     res.json(submission); 
    } 
    }); 

}; 

現在,我想從在同一文件中定義的方法調用此:

exports.evaluate = function(req, res, next){ 
    if(req.body.value == x){ 
    // need to call the above method 
    this.create(req.body.someobject) 
    } 
}; 

如何才能做到這一點?

回答

0

要做到這一點的正確方法是定義一個通用方法,它不是路由處理程序並從處理程序調用它。

var _create = function (object, callback) { 
    var submission = new task (object); 
    submission.save(callback); 
} 

exports.create = function(req, res, next){ 
    _create(req.body, function(err){ 
    if(err){ 
     return next(err); 
    } else { 
     res.json(submission); 
    } 
    }); 
}; 

exports.evaluate = function(req, res, next){ 
    if(req.body.value == x){ 
    // need to call the above method 
    _create(req.body.someobject, function (err) { 
     // Send response 
    }); 
    } 
}; 
+0

通過顯式聲明create,明智地將不同的請求處理程序的代碼分離出來,從評估調用'create(req,res,next)'不是不可能的。 在這種情況下,看起來更像是處理程序可以參數化併合併爲一個單一的函數。 – SarathMS