2015-12-16 2 views
0

У меня пустой массив & хочу вставить все массивы, возвращенные из запроса из mongodb in for, но данные не нажимают на arr. Ниже приведен код:Вставить массив в пустой массив в for-loop javascript

var arr = []; 
    categoryObj.find({is_deleted:false,ancestors: []}, function(err, data) { 
     if(data) { 

      for (i=0;i< data.length;i++) { 
       categoryObj.find({is_deleted:false}, function(err, result) { 
        if (result) { 
         arr[i].push(result); 
        } 
       }) 
      } 
     } 
console.log(arr); 
} 

Любая помощь, высоко оценена.

+2

Что такое 'categoryObj.find'? – nikhil

+0

categoryObj - это модель в mongodb, из которой я получаю данные – rroxysam

+0

Это может быть связано с тем, что вы получаете асинхронный вызов и рабочий цикл перед получением ответа. Попробуйте функцию Promise или callback в этом случае. – Rajesh

ответ

0

Если результат не пусто, то простой arr.push (результат) должен делать то, что (без [я]) В противном случае вы должны проверить, если результат ничего не возвращает, выводя его в консоли ,

0
var arr = []; 

    for (i=0;i< data.length;i++) { 
     categoryObj.find({is_deleted:false}, function(err, result) { 
      if (result) { 
       arr.push(result); 
      } 
     }) 
    } 
console.log(arr); 

ли arr.push вместо arr[i].push.

+0

Я уже использовал его, но не работал. – rroxysam

+0

Попробуйте выполнить consol.log (данные) сверху и скажите мне, какой вывод будет у консоли. – void

0

Если данные объекта вы должны использовать этот код:

for(var key in data){ 
    var value = data[key]; 
    /* do something with your data, e.g. arr.push(value); */ 
} 

Если данные массива вы можете использовать свой код, но изменить эту строку

arr[i].push(result); 

к

arr.push(result); 
+0

Я использовал это, но все равно получаю пустой массив. – rroxysam

+0

объект-путь или массив-путь? Какую возвращаемую стоимость вы получаете от mongoDB? Не могли бы вы опубликовать его. – Marcus

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