使用node.js删除谷歌云存储中的多个对象

我需要从谷歌云存储中删除多个对象。 我一次删除了一个对象。

这是我的代码:

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

但是我需要同时删除多个对象。 有没有可能?

我们确实有bucket#deleteFiles来处理你的请求。 您可以使用prefix选项通过命名约定来定位多个图像,如:

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

如果这不起作用,我们也有一个指导,显示你如何可以自己执行限制逻辑。 请参阅“我的请求正在返回指示我重试请求的错误”: https : //googlecloudplatform.github.io/gcloud-node/#/docs/v0.29.0/guides/troubleshooting

编辑来详细说明如何使用asynchronous进行限制:

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

没有办法从GCS中同时自动删除多个对象。

但是,您可以使用单个调用发出多个请求,该调用将使用批API返回每个单独操作的状态。

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