使用node-async-loop将EXIF图像数据推送到数组中

时间:2017-12-06 09:14:00

标签: node.js amazon-s3 loopback

我使用node-async-loop npm包来推送EXIF图像数据。此EXIF图像循环访问AWS S3存储。然后将此数据推送到数组中。但是在将图像数据推入数组之前node-async-loop解析结果。但缺少最后一个图像来推送数组中的EXIF数据。那么,如何在推送数据之前解决结果?

我把我的代码放在下面:

static getAWSKey(data) {
      var result = [];
      var totalCount  = data.Contents.length;
      var counter = 1;
      return new Promise(function(resolve, reject) {
          asyncLoop(data.Contents, function (item, next) {
              console.log('item.....'+JSON.stringify(item));

              var urlParams = {Bucket: 'bucketName', Key: item.Key};
              s3Bucket.getSignedUrl('getObject', urlParams, function(err, url){
                  request.get(url, function (err, res, body) {
                      new ExifImage(body, function (error, exifData) {
                          if (error) {
                              console.log('Error: '+ error.message);
                              result.push(error.message);
                          } else {
                              result.push(exifData);
                              console.log("RESULT:"+JSON.stringify(result));
                          }
                       next();
                      });
                  });
              });

              counter++;
              if(counter > totalCount) {
                  console.log('proc succ: finish');
                  resolve(result);
            }
        });
    });
}

拜托,任何人都可以帮助我。 感谢

1 个答案:

答案 0 :(得分:0)

我使用asyncLoop它的工作,但我的循环开始位置是1.所以,asyncLoop错过了我的上一条记录。所以,不要显示最后一条记录。

第二件事是我将下面的功能放在另一种方法中。

new ExifImage(body, function (error, exifData) {
                          if (error) {
                              console.log('Error: '+ error.message);
                              result.push(error.message);
                          } else {
                              result.push(exifData);
                              console.log("RESULT:"+JSON.stringify(result));
                          }