8

Google クラウド ストレージから複数のオブジェクトを削除する必要があります。一度に 1 つのオブジェクトを削除しました。

これは私のコードです:

var gcloud = require('gcloud')({
  projectId: "sampleProject1"
});
var gcs = gcloud.storage();
var myBucket = gcs.bucket('sampleBucket1');
var file = myBucket.file('1.png');

file.delete(function (err, apiResponse) {
  if (err) {
    console.log(err);
  }
  else {
    console.log("Deleted successfully");
  }
});

しかし、複数のオブジェクトを同時に削除する必要があります。それは可能ですか?

4

4 に答える 4

6

bucket#deleteFilesリクエストのスロットリングを処理するものがあります。オプションを使用してprefix、次のような命名規則によって複数の画像を対象にすることができます。

bucket.deleteFiles({ prefix: 'image-' }, callback);

それがうまくいかない場合は、スロットリング ロジックを自分で実行する方法を示すガイドも用意されています。「リクエストがエラーを返し、リクエストを再試行するよう指示しています」を参照してください: https://googlecloudplatform.github.io/gcloud-node/#/docs/v0.29.0/guides/troubleshooting

asyncを使用してスロットリングを行う方法を詳しく説明するために編集します。

var async = require('async');
var PARALLEL_LIMIT = 10;

function deleteFile(file, callback) {
  file.delete(callback);
}

async.eachLimit(filesToDelete, PARALLEL_LIMIT, deleteFile, function(err) {
  if (!err) {
    // Files deleted!
  }
});
于 2016-04-04T17:02:23.967 に答える
0

複数のオブジェクトを GCS から同時にアトミックに削除する方法はありません。

ただし、バッチ APIを使用して、1 回の呼び出しで複数の要求を発行し、個々の操作のステータスを返すことができます。

于 2016-04-04T16:18:24.210 に答える
-3
    var gcloud = require('gcloud')({
    projectId: "sampleProject1"
     });
    var gcs = gcloud.storage();
   var myBucket = gcs.bucket('sampleBucket1');
   var collection = gcs.collection("Add file for delete");  
   collection.insert({'1.png'},{'2.png'});

   collection.delete(function (err, apiResponse) {
   if (err) {
    console.log(err);
    }
   else {
    console.log("Deleted successfully");
   }
   });
于 2016-04-05T13:49:09.157 に答える