2014-09-21 8 views
7

Ich benutze nodejs und versuche, mehrere Objekte gleichzeitig zu löschen. Aus irgendeinem Grund funktioniert die Operation trotz fehlender Fehlermeldung nicht wie erwartet (die Dateien werden nicht gelöscht). Hier ist der Code:amazon s3 deleteObjects nodejs - kann nicht funktionieren

s3.deleteObjects({ 
    Bucket: 'myprivatebucket/some/subfolders', 
    Delete: { 
     Objects: [ 
      { Key: 'nameofthefile1.extension' }, 
      { Key: 'nameofthefile2.extension' }, 
      { Key: 'nameofthefile3.extension' } 
     ] 
    } 
}, function(err, data) { 

    if (err) 
     return console.log(err); 

    console.log('success'); 

}); 

Wenn ich versuche, über die Dateien zu durchlaufen, und verwenden Sie die s3.deleteObject Methode dann funktioniert es ziemlich gut.

Ich habe auch versucht, zu Bucket ohne seine Unterordner (wie "Myprivatebucket") zu spezifizieren, aber ich habe kein Ergebnis wieder.

Irgendwelche Ideen, wie man dieses Ding arbeiten lässt? Ich verwende die Knotenversion: 0.10.32 und die aws sollte 2.0.17 sein.

Antwort

14

Nun endlich habe ich das Problem gelöst.

Beim Einfügen der Dateien habe ich die so genannten Unterordner in den Bucket-Namen aufgenommen. Zum Beispiel:

{ Bucket: 'myprivatebucket/some/subfolders', Key: 'nameofthefile1.extension' } 

Dies ist offensichtlich falsch und sollte vermieden werden. Der richtige Anwendungsfall wie folgt:

{ Bucket: 'myprivatebucket', Key: 'some/subfolders/nameofthefile1.extension' } 

Nachdem die Einzelteile so einfügen, benutzen Sie einfach den gleichen Eimer und Schlüssel Objekte zu löschen und es wird funktionieren! Zumindest funktionierte es für mich!

+0

Vielen Dank! Endlich kann ich Dateien aus dem Bucket löschen! – xneojal