2016-08-10 5 views
2

Привет всем, я пытаюсь найти конкретные данные с помощью фильтра, но я не знаю, как мы устанавливаем или используем фильтр и его свойства. Я сохранил оценку 1 для true и 0 для false. И я хочу, чтобы в следующий раз, когда я вызываю вопрос, он фильтрует вопрос по баллам. Так что вопрос 0th идентификатор будет отображаться в браузере, а не одинфильтр в mongodb с помощью узла js

1) .Это моя схема, где я храню вопрос ID, оценка и время для каждого отдельного вопроса

2). Это вопросная схема

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

3). Это мой узел расслоения плотного использовать код для загрузки и установить фильтр На самом деле я не получаю идею, как мы установили фильтр так что в следующий раз я называю API только вопрос идентификатора 0th счета появится в моем браузере, а не 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

ok, я получил его, но он показал мне ошибку в браузере –

Смежные вопросы