Javascript 需要帮助以干燥的格式重写此文件吗

Javascript 需要帮助以干燥的格式重写此文件吗,javascript,mongodb,express,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){

我目前正在使用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);
        });
    }

因为执行查询的部分和查询响应处理程序似乎是相同的。条件部分是查询构造

var firstName = req.query.firstName;
var students = req.query.students;

var query = {};
if (firstName) {
    req.query.firstName = firstName;
} else if (students) {
    req.query.students = students;
} else {
    return next(new Error('Invalid request'));
}

Instructor.find(query, function (err, results) {
    if (err) {
        // You should sanitize this error though
        return res.status(500).send(err);
    }

    return res.json(results);
});

现在,在实践中,您应该考虑更多地验证查询参数。e、 g:

.isaray(req.query.student)&&!\uu。isEmpty(req.query.students)
。然后,学生数组可以包含重复的键。e、 g:
[1,1,1,1,1,1….
(1000次)。这可以用作拒绝服务。在使用ID阵列之前,请尝试对其执行
..uniq

对于字符串…
\uu.isString(req.query.firstName)&&&&.isEmpty(req.query.firstName)


在这些情况下,返回HTTP 400。

如果块是传递给
讲师的第一个参数(如果有的话),则唯一在
中似乎不同的东西。查找

您可以仅使用
if
语句来确定第一个参数,并调用
讲师。使用适当的参数仅查找一次

以下是一个例子:

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

谢谢你的回答!你介意再解释一下如何编写代码吗?:)如果这是有效的代码,这个问题可能属于。