2016-08-10 13 views
2

こんにちは、私はフィルタを使用して特定のデータを見つけようとしていますが、フィルタを設定または使用する方法はわかりません。そして私は次回に質問して、スコア上の質問にフィルターをかけます。だから、0番目のid質問がブラウザ上に表示され、ない1mongodbでノードjsを使用してフィルタ

1).Thisは、私はすべての単一の質問

2)のための質問ID、スコアと時間を格納し、私のスキーマです。これは質問スキーマです

 _id:{type:String}, 
    question:{type:String}, 
    answer:{type:String} 

3)です。これは実際に私はAPIを呼び出して、次の時間が唯一の0番目のスコアのid質問は私のブラウザ上に表示されるように、我々は、フィルタを設定する方法のアイデアを得ていないフェッチし、フィルタ を設定するには、私のノードのjsコード使用ではなく、1

var childinfo = require('../models/child.js'); 
    var childquestion = require('../models/question.js'); 

    this.filter = function(req, res, next){ 

    async.waterfall({ 
     function(callback){ 
      try{ 
       var query = {child.quiz.score:1}; 
       var projection = ''; 
       childinfo.find(query,function(err,data){ 
        if(err) return next(err); 
        callback(null, data) 
       }); 
      } 
      catch(err){ 
       console.log(err); 
       return next(err); 
      } 
     }, 
     function(callback, data){ 
      try{ 
       var childq = new childquestion(); 
       var query = {data.child.quiz.questionId === childq._id}; 
       var projection = ''; 
       childquestion.filter(query,projection) 
        .skip() 
        .exec(function(err,data){ 
        if (err) return next(err); 
        res.send(data); 
       });       
       }   
      catch(err){ 
       console.log('Error While Saving the result ' +err); 
       return next(err); 
      } 
     } 
     }); 
    } 

答えて

0
MongoDBの中にネストされたフィールド上の

クエリは次のように書くことができます:あなたはフィールドを引用して使用する必要があります

childinfo.find({"child.quiz.score": 1},function(err,data){ .. }) 

:代わりに==で。 だからあなたのコードは次のようになります。

var childinfo = require('../models/child.js'); 
    var childquestion = require('../models/question.js'); 

    this.filter = function(req, res, next){ 

async.waterfall({ 
    function(callback){ 
     try{ 
      var query = { "child.quiz.score" : 1 }; 
      var projection = ''; 
      childinfo.find(query,function(err,data){ 
       if(err) return next(err); 
       callback(null, data) 
      }); 
     } 
     catch(err){ 
      console.log(err); 
      return next(err); 
     } 
    }, 
    function(callback, data){ 
     try{ 
      var childq = new childquestion(); 
      var query = {"data.child.quiz.questionId":childq._id}; 
      var projection = ''; 
      childquestion.find(query,projection) 
       .skip() 
       .exec(function(err,data){ 
       if (err) return next(err); 
       res.send(data); 
      });       
      }   
     catch(err){ 
      console.log('Error While Saving the result ' +err); 
      return next(err); 
     } 
    } 
    }); 
} 

編集:コード編集用

+0

おかげで答えていますが –

+0

を書いたものになっていない、私は完全な例を追加しました。 – ema

+0

大丈夫ですが、ブラウザにエラーが表示されます –

関連する問題