2015-11-20 2 views
1

Я все еще изучаю node.js и mongodb. Я пытаюсь написать простое приложение с nodejs и mongoose. Моя мангуст схема:nodejs + mongoose - как использовать forEach в nodejs

var todoSchema = new Schema({ 
    task: String, 
    description: String, 
    date: Date, 
    status: String, 
    checklist: Boolean, 
    pic: String 
}); 

У меня есть коллекция имени todos Я пытаюсь получить содержимое todos с помощью этого кода:

apiRoutes.route('/todos/detail') 
.get(function(req, res){ 
    Todo.distinct("pic").each(function(doc){ 
     Todo.find({"pic": doc.pic}, function(err, todo){ 
     if (err) 
      res.send(err); 

     var finalResult = []; 
     finalResult.push(todo); 
     res.send(finalResult); 
     }); 
    }); 
}); 

Но я получил эту ошибку:

Object #<Query> has no method 'each' 

Любая идея решить это? Очень ценю за помощь.

ответ

3

Из того, что я собираю в вашем вопросе, вам не обязательно нужен цикл, поскольку с помощью выделенного массива pics вы выполняете итерацию, вы используете его для запроса коллекции для каждого изображения, которое равно , по существу эквивалентное простому запрашивая всю коллекцию, как отправка результирующего массива документов возвращается из запроса:

apiRoutes.route('/todos/detail').get(function(req, res){ 
    Todo.find({"pic": { "$exists": true }}, function(err, todos){ 
     if (err) res.send(err); 
     res.send(todos); 
    }); 
}); 

Если вы не хотите, чтобы получить четкий список фотографий, чтобы получить детали Todo с этим фото вы могли бы попробовать следующий подход:

apiRoutes.route('/todos/detail').get(function(req, res){ 
    Todo.find().distinct('pic', function(error, pics) { 
     // pics is an array of all pics 
     Todo.find({"pic": { "$in": pics } }, function(err, todos){ 
      if (err) res.send(err); 
      res.send(todos); 
     }); 
    }); 
}); 
+1

привет @chridam спасибо за вашу помощь. это сработало. действительно оценил это :) – lamfete

0

Для запуска вы должны попробовать с .forEach() вместо .each() первого :) Здесь вы можете увидеть forEach doc.