2016-04-03 6 views
2

私は、mongodbからのデータをフィルタリングするための条件に一致するwhileループを持っています。ただし、コールバックを使用すると、console.logには1つの結果しか返されません。 whileループ内にconsole.logがあると、3つのエントリを受け取るはずです。コールバックに必要なデータが1つだけなのはなぜですか?ループとコールバックが異なる結果を返す

while(i--) { 
    if (0 >= [friday, saturday, sunday].indexOf(results[i].selectedDate)) { 
     theWeekend = results[i]; 
     console.log(theWeekend); //returns three results (correct) 
    } 
} 
callback(err, theWeekend) 
console.log(theWeekend); //returns one results (incorrect) 

正しいデータあなたは次のようにすべての結果を格納する配列を使用する必要が

{ _id: 56fffb5ceb76276c8f39e3f3, 
    url: 'http://londonist.com/2015/11/where-to-eat-and-drink-in-balham', 
    title: 'Where To Eat And Drink In... Balham | Londonist', 
    selectedDate: Fri Apr 01 2016 01:00:00 GMT+0100 (BST), 
    __v: 0 } 
{ _id: 56fffb8eeb76276c8f39e3f5, 
    url: 'https://news.ycombinator.com/item?id=11404770', 
    title: 'The Trouble with CloudFlare | Hacker News', 
    selectedDate: Sun Apr 03 2016 01:00:00 GMT+0100 (BST), 
    __v: 0 } 
{ _id: 56fffb6ceb76276c8f39e3f4, 
    url: 'http://wellnessmama.com/13700/benefits-coconut-oil-pets/', 
    title: 'Benefits of Coconut Oil for Pets - Wellness Mama', 
    selectedDate: Sat Apr 02 2016 01:00:00 GMT+0100 (BST), 
    __v: 0 } 

不正なデータ

{ _id: 56fffb6ceb76276c8f39e3f4, 
    url: 'http://wellnessmama.com/13700/benefits-coconut-oil-pets/', 
    title: 'Benefits of Coconut Oil for Pets - Wellness Mama', 
    selectedDate: Sat Apr 02 2016 01:00:00 GMT+0100 (BST), 
    __v: 0 } 
+0

[ 'Array.prototypeを.filter() ']](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter) – Andreas

答えて

1

var theWeekends = [] 
while(i--) { 
    if (0 >= [friday, saturday, sunday].indexOf(results[i].selectedDate)) { 
     theWeekends.push(results[i]); 

    } 
} 
callback(err, theWeekends) 
console.log(theWeekends); //returns 3 results (correct) 
+0

もちろんです。ありがとうございました –

関連する問題