Javascript 需要帮助以干燥的格式重写此文件吗
我目前正在使用Express和MongoDb构建一个API应用程序。 我对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){
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);
谢谢你的回答!你介意再解释一下如何编写代码吗?:)如果这是有效的代码,这个问题可能属于。