2016-04-19 9 views
0

値私のマングースモデルです:検索はここ

{ 
    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"> 

私は、検索のために書いたマングースクエリ:

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要求では省略/欠落している場合の任意の1つまたは複数のフィールド、このクエリは機能していません。 これについてmongooseクエリが必要です。

答えて

1

あなたは条件付きのように、クエリの条件を設定することができます。

var conditions = {}; 
if(req.query.subjectName !== undefined) conditions.subjectCode = req.query.subjectName; 
.... 
Question.find(conditions, function(err, question){...}); 
+0

おかげハンク。 それはほとんどすべてを修正します。 – Shajan

+0

あなたは感謝する答えを受け入れることができます。 :) –

関連する問題