2016-08-26 4 views
0

Смотрите мой код ниже.Добавить массив изображений в существующий массив

exports.myexports = (req, res) => { 

    var arrayname = new Array(); 
    Hello.find({},function(error,fetchAllHellos) 
    { 
     if(fetchAllHellos) 
     { 
     async.eachSeries(fetchAllHellos, function(Hello, callback) 
     { 

      var hArr     = {}; 
      var image = {}; 
      hArr['_id']   = Hello._id; 
      hArr['myname']  = Hello.name; 


      /* Use asyn Parallel method for waiting those functions value */ 
      async.parallel 
      (
      [ 
       function(callback) 
       { 
        fetchingDetails(Hello._id, function(err, fetchAllDetails) 
        { 

        bArr['address'] = fetchAllDetails; 
        async.eachSeries(fetchAllDetails, function(fetchAllDetails, callback) 
        { 

         async.parallel 
         (
         [ 
          function(callback) 
          { 
          fetchingMyImage(fetchAllDetails._id, function(err, wer) 
          { 
           image[fetchAllDetails._id] = wer; 
           callback(err); //Forgot to add 
          }) 
          } 
         ], 
         function(err) 
         { 
          //console.log(image); 
          arrayname.push(image); 
          //bArr['image'] = image 
          callback(err); 
         } 
        ); 
        }); 

        callback(err); //Forgot to add 
        }); 
       } 
      ], 
      function(err) 
      { 
       arrayname.push(hArr); 
       callback(err); 
      } 
     ) 
     }, 
     function(err) 
     { 
      console.log(arrayname); //This should give you desired result 

     }); 
     } 
     else 
     { 
     return res.json({"status":'error'}) 
     } 
    }); 
}; 



function fetchingMyImage(mid, callback) 
{ 

    UserImage.find({myid:mid},function(error,fetchallImages) 
    { 
    callback(error,fetchallImages); 
    }); 
} 

Я хочу, как этот массив

user 
[ 
    id = 'lkjlk', 
    myname = 'helloname' 
    address = [ 
       object, 
      ] 
    image = [ 
      myid = image.png 

      ]   

] 
+0

Вы перекрывая 'функцию callback' в каждом вызове, который не является хорошей идеей, по крайней мере, с точки зрения читаемости –

+0

Существует ошибка синтаксиса в 2' async.eachSeries'. Вы пытались использовать массив как итератор. См. Мой ответ и дайте мне знать, поможет ли вам решить проблему. – Shrabanee

+0

Также вы никогда не добавляли окончательный обратный вызов для второго 'async.eachSeries'. Ненужное использование 'async.parallel' внутри 2-го' async.eachSeries'. – Shrabanee

ответ

0

Внесены изменения в вашем коде. Дайте мне знать, если это вам поможет.

Пожалуйста, ознакомьтесь с кодом и дайте мне знать, поняли ли вы изменения или нет.

exports.myexports = (req, res) => { 
 

 
\t var arrayname = new Array(); 
 
\t Hello.find({},function(error,fetchAllHellos) 
 
\t { 
 
\t \t if(fetchAllHellos) 
 
\t \t { 
 
\t \t \t async.eachSeries(fetchAllHellos, function(Hello, callback) 
 
\t \t \t { 
 

 
\t \t \t \t var hArr     = {}; 
 
\t \t \t \t var image = []; 
 
\t \t \t \t hArr['_id']   = Hello._id; 
 
\t \t \t \t hArr['myname']  = Hello.name; 
 
\t \t \t \t 
 
\t \t \t \t //Read doc before you can start using. 
 
\t \t \t \t async.parallel 
 
\t \t \t \t ([ 
 
\t \t \t \t \t function(callback) 
 
\t \t \t \t \t { 
 
\t \t \t \t \t \t fetchingDetails(Hello._id, function(err, fetchAllDetails) 
 
\t \t \t \t \t \t { 
 

 
\t \t \t \t \t \t \t bArr['address'] = fetchAllDetails; 
 
\t \t \t \t \t \t \t async.eachSeries(fetchAllDetails, function(eachDetail, callback) 
 
\t \t \t \t \t \t \t { 
 
\t \t \t \t \t \t \t \t fetchingMyImage(eachDetail._id, function(err, wer) 
 
\t \t \t \t \t \t \t \t { 
 
\t \t \t \t \t \t \t \t \t image.push({eachDetail._id : wer; 
 
\t \t \t \t \t \t \t \t \t callback(err); 
 
\t \t \t \t \t \t \t \t }) 
 

 
\t \t \t \t \t \t \t }, function(err) 
 
\t \t \t \t \t \t \t { 
 
\t \t \t \t \t \t \t \t console.log(image); 
 
\t \t \t \t \t \t \t \t arrayname.push({images :image}); 
 
\t \t \t \t \t \t \t \t 
 
\t \t \t \t \t \t \t \t callback(err); 
 
\t \t \t \t \t \t \t }); 
 

 
\t \t \t \t \t \t }); 
 
\t \t \t \t \t } 
 
\t \t \t \t ], 
 
\t \t \t \t function(err) 
 
\t \t \t \t { 
 
\t \t \t \t \t arrayname.push(hArr); 
 
\t \t \t \t \t callback(err); 
 
\t \t \t \t }) 
 
\t \t \t }, 
 
\t \t \t function(err) 
 
\t \t \t { 
 
\t \t \t \t console.log(arrayname); //This should give you desired result 
 
       console.log(arrayname.images)// Array of images will be consoled here. 
 
\t \t \t \t //callback(err); 
 

 
\t \t \t }); 
 
\t \t } 
 
\t \t else 
 
\t \t { 
 
\t \t \t return res.json({"status":'error'}) 
 
\t \t } 
 
\t }); 
 
}; 
 

 

 

 
function fetchingMyImage(mid, callback) 
 
{ 
 

 
\t UserImage.find({myid:mid},function(error,fetchallImages) 
 
\t { 
 
\t \t callback(error,fetchallImages); 
 
\t }); 
 
}

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