2016-08-26 17 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

あなたは第二 'async.eachSeries'に構文エラーがあり、少なくとも可読性 –

+0

の観点から、良いアイデアではありません各呼び出しで' callback'機能を、オーバーライドされています。配列をイテレータとして使用しようとしました。私の答えを見て、それがあなたの問題解決に役立つかどうかを教えてください。 – Shrabanee

+0

また、第2の 'async.eachSeries'に対して最終コールバックを追加したこともありません。第2の 'async.eachSeries'の中で' async.parallel'を不必要に使用します。 – 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 }); 
 
}

関連する問題