这是我的猫鼬模型:
{
id : Schema.ObjectId,
subjectCode: String,
part: String,
paper : [{
year: Number,
month: String
}],
question: String,
questionNumber: String,
marks: Number
}
我想使用这个模型进行高级搜索。搜索表单有这些html输入字段。
<input type="text" name="subjectCode">
<input type="text" name="part">
<select name="year" multiple>
<option value="">Any</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
</select>
<select name="month" multiple>
<option value="">Any</option>
<option value="JAN">JAN</option>
<option value="FEB">FEB</option>
<option value="MAR">MAR</option>
</select>
<input type="text" name="question">
<input type="text" name="questionNumber">
<input type="text" name="marks">
我为搜索写的Mongoose查询:
Question.find({
subjectCode: req.query.subjectName,
'paper.year': req.query.year,
'paper.month': req.query.month,
part: req.query.questionPart,
questionNumber: req.query.questionsNumber}, function(err, question){
if(err){
return next(err);
}
else{
res.json(question);
}
});
现在的问题是,当get请求中缺少/省略了任何一个或多个字段时,该查询就不起作用了。我需要一个猫鼬查询。
您可以有条件地设置查询条件,如:
var conditions = {};
if(req.query.subjectName !== undefined) conditions.subjectCode = req.query.subjectName;
....
Question.find(conditions, function(err, question){...});