2016-06-19 55 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(); 
    } 

我希望它會返回學生姓名的數組,每個迭代,但是當數組應該有名字時,我總是得到一個空數組。

如果我刪除了for循環,只是做:

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

它將返回預期的學生姓名(或名稱)。是一個for-loop正確的方法來做到這一點?

回答

0

想通了。無論出於何種原因,for循環都不起作用,但使用.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,它只是返回一個數組中的所有文檔,換句話說,我不知道哪個文檔使用了什麼名稱。使用迭代器,我得到每個名稱下的子數組,這是我需要的,因爲我需要以這種方式組織輸出。 –