node.js - 使用 node.js 从谷歌云存储中删除多个对象(文件和文件夹)的最佳做法是什么

标签 node.js google-cloud-platform google-cloud-storage

我想从我的谷歌云存储中删除多个对象,这意味着删除文件夹和文件的组合。官方文档中有一个例子:

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

这将删除 images 目录中的所有文件。 但是如果我想删除这个目录下的10000个文件怎么办? 我的演示代码是这样的:

const _deleteItems = async (gcsClient, bucketName, allItems) => {
    try {
        for (let item of allItems) {
            await gcsClient.bucket(bucketName).deleteFiles({ prefix: getFilePath(item) }, function(err) {});
        }
    } catch (err) {
        throw new Error('Could not delete item');
    }
};

有更好的方法吗? 如果同时有人在我要删除的文件夹中上传新文件怎么办?在这种情况下,该文件也将被删除。

最佳答案

  • 有更好的方法吗?

    Here您可能会找到适用于您的用例的有关对象删除和批量对象删除的最佳实践。

  • 如果同时有人在我要删除的文件夹中上传新文件怎么办?在这种情况下,该文件也将被删除。

    在这种情况下,您需要使用 Object Lifecycle Management并设置规则以保护具有特定“年龄”的文件。您也可以使用 Object versioning “保护您的云存储数据不被覆盖或意外删除” 但请记住以下几点:

    • “启用对象版本控制会增加存储成本”

    • “在启用了对象版本控制的存储桶中使用对象生命周期管理时,删除对象的实时版本会创建一个非当前版本,而删除一个非当前版本会永久删除该版本。”

关于node.js - 使用 node.js 从谷歌云存储中删除多个对象(文件和文件夹)的最佳做法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60641041/

相关文章:

google-cloud-platform - Google 负载均衡器拒绝自签名证书

google-cloud-platform - 快照大小不一致

google-cloud-platform - 无法使用 Terraform 在 Cloud Run 上部署公共(public) API

java - 如何替换 servingURL 后面的图像?

java - .\key.p12 : open failed: ENOENT (No such file or directory)

mysql - node-mysql 池事件连接没有被释放?

javascript - 如何使用可以启动/停止的递归函数编写应用程序

node.js - React SSR 引用错误 : document is not defined

javascript - MongoDB 与 Node.js 说 "Unexpected token"

python - BigQuery load_table_from_storage 无法识别 uri