2017-03-27 82 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

我没有带编码的话,我想了解如何处理这些多个阵列与''async'' – Khan

+0

你会用你的异步函数中的try/catch为图像,视频等 –

回答

1

使用async parallel为您选购的视频和图片上传。如果你的服务不允许多次插入,那么你需要使用asynceachmap

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 
     } 
    }) 
}