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