2017-03-27 16 views
0

私は、テキスト、画像、動画、およびタグオプション付きの投稿を持っています。テキスト残りはオプションです。現在はasyncを使用しています。タグが空であれば画像をアップロードし、画像がない場合はビデオをアップロードし、すべてが与えられている場合はどうすれば画像、動画をアップロードしてから保存できますか?次 は、あなたのオプションの動画や画像アップロード用のサンプル入力Nodejs - 複数の配列を扱う

images: [{"image":"image1"},{"image":"image2"}] 
videos: [{"video":"video1"},{"video":"video2"}] 
tags: [{"userId":2},{"userId":23} ] 
text: having a good day :) 
+1

私は 'でこれらの複数のアレイを処理する方法を理解しようとしています、コード化された何かをやりなさいより多くの情報/コードサンプル芽 –

+0

を必要とする' – Khan

+0

async''あなたは非同期関数内/キャッチを試みる使用したいです画像、動画など –

答えて

1

使用async parallelです。あなたのサービスが複数の挿入を許さない場合は、asynceachまたはmapを使用する必要があります。

const async = require("async"); 

// example data 
const data = { 
    images: [{"image":"image1"},{"image":"image2"}] 
    videos: [{"video":"video1"},{"video":"video2"}] 
    tags: [{"userId":2},{"userId":23} ] 
    text: "having a good day :)" 
} 

if(!data.text){ 
    //return 'text is required' message 
} 
else{ 
    const imageUrls = []; 
    const videoUrls = []; 

    // http://caolan.github.io/async/docs.html#parallel 
    async.parallel({ 
     uploadImages: function(callback){ 
      async.each(data.images, function(image, eachCallback){ 
      // upload each image 
      // push returned url in imageUrls 
      // call return eachCallback(), or if err then return eachCallback(err) 
     }, function(err){ 
      if(err){ 
       return callback(err) 
      } 
      else{ 
       return callback() 
      } 

      }) 
     }, 
     uploadVideos: function(callback){ 
      async.each(data.videos, function(video, eachCallback){ 
      // same process as images 
     }, function(err){ 
      if(err){ 
       return callback(err) 
      } 
      else{ 
       return callback() 
      } 

      }) 

     } 
    }, function(err, results){ //final callback of async parallel 
     if(err){ 
      //handle err 
     } 
     else{ 
      const obj = { 
       images: imageUrls, 
       videos: videoUrls, 
       tags: data.tags, 
       text: data.text 
      } 

      //insert obj to db and respond with success message 
     } 
    }) 
} 
関連する問題