2016-06-13 26 views
0

Ich habe eine Route, die ich in nodejs gebaut habe, die im Grunde alle Objekte in einem S3-Eimer packt. Im Moment bin ich nur eine Konsole, die sie abmeldet.Grabbing Objekte aus S3 Eimer

s3.listObjects({Bucket: 'store-generated-images'}).eachPage(function(err, data) { 

    console.log(data.Contents); 

}) 

und von diesem erhalte ich eine object zurück, die wie folgt aussieht:

 { DisplayName: 'servers', 
     ID: '58af203151c51eddf2fdf1679211e0b91d274a8fda23f58280f9b06371e436f7' } }, 
    { Key: 'generatedi_images/e7_zysitb2tp8nr2t7cymjlf04emyzbd8_q02_.png', 
    LastModified: Sat Apr 23 2016 10:16:46 GMT+0100 (BST), 
    ETag: '"33ff7046c9ffe29775672825ca16c1de"', 
    Size: 499304, 
    StorageClass: 'STANDARD', 
    Owner: 

erhalte ich eine Liste von diesen in meinem Terminal angezeigt, bis es Fehler aus. Mein Fehler ist:

/path/to/node_modules/aws-sdk/lib/request.js:31 
      throw err; 
      ^

TypeError: Cannot read property 'Contents' of null 

Meine Frage. Bedeutet dieser Fehler, dass sich im S3-Bucket keine Objekte mehr befinden?

Woher weiß ich, wann ich alle Objekte habe?

Danke!

Antwort

1

Ich weiß nicht, ob dieser Fehler bedeutet, dass in S3 keine Daten mehr vorhanden sind. Aber ich denke, Sie wie unten effizienteren Code verwenden können:

s3.listObjects({Bucket: 'store-generated-images'}).eachPage(function(err, data) { 
    if(err) { 
     console.log('Error in fetching data' + JSON.stringify(err)); 
    } else { 
     if(data && data.Contents) { 
      console.log(data.Contents); 
     } else { 
      console.log('No data in S3!'); 
     } 
    } 
}) 

Versuchen Sie einfach anmelden, wenn Sie einen Fehler von der Fehler erste Methode bekommen.

+0

Prost Mann! Ja, ich denke, es so viel besser zu handhaben, wie du bist. Ich habe mir die Dokumentation angesehen, konnte aber nichts finden, was mir sagen würde, wie ich prüfen würde, ob ich alle Objekte im S3-Bucket bekommen habe oder nicht – PourMeSomeCode