2016-06-19 3 views
0

То, что я пытаюсь достичь, заключается в следующем, который не работает:Как итерация запроса Монго через цикл

var names = ["MATT", "GABE", "SAM"]; 
var students = []; 
for (var i = 0; i < 3; i++) { 
    students[i] = Programs.find({ CampYear: 2016, 'Teachers.Week1.Sunday': names[i] }).fetch(); 
    } 

Я хотел бы ожидать, что он будет возвращать массив имен студентов для каждого итерации, но я продолжаю получать пустой массив, когда массив должен иметь имена.

Если я удалить цикл и просто сделать:

students[0] = Programs.find({ CampYear: 2016, 'Teachers.Week1.Sunday': listOfSundayTeacherNames[2] }).fetch(); 

Он возвращает имя студента (ов) ожидается. Правильно ли это для цикла?

ответ

0

Выяснил это. По какой-то причине for-loop не будет работать, но с использованием .map.

var names = _.map(names, function(num){ return Programs.find({ CampYear: 2016), 'Teachers.Week1.Sunday': num }).fetch(); }); 
0

Гораздо лучше было бы использовать оператор в $in с запросом:

var students = Programs.find({ 
    'CampYear': 2016, 
    'Teachers.Week1.Sunday': { '$in': names } 
}).fetch(); 
+0

Да, я знаком с $ в. Но то, что я был, это организация использования итератора. С помощью $ in он просто возвращает все документы в одном массиве, другими словами, я не могу определить, какие документы пошли с каким именем. С помощью итератора я получаю подмассивы под каждым именем, и это то, что мне нужно, потому что мне нужно было организовать выход таким образом. –

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