【问题标题】:How to call an express export method internally?如何在内部调用快速导出方法?
【发布时间】:2016-01-26 10:11:30
【问题描述】:

这是我第一个很好地响应 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)
  }
};

如何做到这一点?

【问题讨论】:

    标签: javascript node.js api mongoose


    【解决方案1】:

    这样做的正确方法是定义一个不是路由处理程序的通用方法并从处理程序中调用它。

    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
        });
      }
    };
    

    【讨论】:

    • 通过显式声明create 从评估中调用create(req, res, next) 并非不可能,将不同请求处理程序的代码分开是明智的。在这种情况下,处理程序看起来更像是可以参数化并合并到一个函数中。
    猜你喜欢
    • 2016-07-01
    • 2015-05-25
    • 2019-01-11
    • 1970-01-01
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多