javascript - 需要帮助以 DRY 格式重写它

标签 javascript mongodb express dry

我目前正在使用 Express 和 MongoDb 构建 API 应用程序。 我对 JavaScript 很陌生。关于以更干净、更干燥的方式编写此内容有什么建议吗?

var firstName = req.query.firstName;
var students = req.query.students;
    if(firstName){
        Instructor.find({firstName: firstName},function(err,instructors){
          if(err) 
            res.status(500).send(err);
          else
          res.json(instructors);
        });
        console.log("Instructor name is ", req.query.firstName);
    }
    else if(students){
        Instructor.find({students: students},function(err,instructors){
          if(err)
            res.status(500).send(err);
          else
          res.json(instructors);
        });
    }
    else{
        Instructor.find(function(err,instructors){
          if(err) 
            res.status(500).send(err);
          else
          res.json(instructors);
        });
    }

最佳答案

if block 中唯一不同的是您传递给 Instructor.find 的第一个参数(如果有的话)。

您可以仅使用 if 语句来确定第一个参数,并使用适当的参数仅调用一次 Instructor.find

这是一个例子:

var firstName = req.query.firstName;
var students = req.query.students;
var params = [];
var callback = function(err,instructors){
    if(err) 
      res.status(500).send(err);
    else
      res.json(instructors);
  };

if(firstName){
    params.push({firstName: firstName});
} else if(students){
    params.push({students: students});
}

params.push(callback);
Instructor.find.apply(Instructor, params);

关于javascript - 需要帮助以 DRY 格式重写它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43959837/

相关文章:

javascript - vue.js 在 v-repeat 中观察数组变量

javascript - 如何在angularjs中使用$resource从url获取JSON对象(如 'GET')

javascript - 如何避免使用 Express 在 Node.js 中重新发送刷新数据

javascript - 将文本区域内容转换为 html

mongodb - MongoDB dataSize 怎么会比 storageSize 大?

forms - 如何在 express.js 中获取嵌套表单数据?

javascript - 我认为这段涉及 NodeJs 和 MongoDb 的代码可能会失败,如何解决?

node.js - Mongoose 种群(refs)不起作用

javascript - Restangular 不 PUT 完整对象

node.js - Mongoose/Mongodb 更新返回值及错误处理