Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从谷歌云存储中批量删除文件?(Node.js)_Node.js_Firebase_Google Cloud Platform_Google Cloud Storage_Firebase Storage - Fatal编程技术网

如何从谷歌云存储中批量删除文件?(Node.js)

如何从谷歌云存储中批量删除文件?(Node.js),node.js,firebase,google-cloud-platform,google-cloud-storage,firebase-storage,Node.js,Firebase,Google Cloud Platform,Google Cloud Storage,Firebase Storage,我正在尝试从gc存储中批量“同时”删除2个文件,这取决于文件本身。到目前为止,我一直在做这样的事情: exports.deleteImageFromBucket = async function (uri, bucket) { const imagePath = getStoragePathFromUrl(uri); try { await bucket.file(imagePath).delete(); } catch (err) { console.error(

我正在尝试从gc存储中批量“同时”删除2个文件,这取决于文件本身。到目前为止,我一直在做这样的事情:

exports.deleteImageFromBucket = async function (uri, bucket) {
  const imagePath = getStoragePathFromUrl(uri);

  try {
    await bucket.file(imagePath).delete();
  } catch (err) {
    console.error(`Error deleting image ${uri} from storage`);
    throw err;
  }
}; 
但是,由于我有图像和它们各自的缩略图,如果我调用此函数两次,其中一次被拒绝,这将导致糟糕的用户体验


有什么想法吗?

据我所知,云存储没有批量删除功能。这意味着您必须:

  • 执行两个单独的删除调用
  • 确保任何代码加载映像都足够健壮,能够处理其中一个映像的缺失。通常,您可以通过按特定顺序删除图像来减少这种影响。例如:如果用户从缩略图中看到一幅完整大小的图像,那么首先删除缩略图可以确保应用程序即使在完整大小的图像仍然保留的情况下仍能工作
  • 运行定期进程以删除孤立文件

  • 据我所知,云存储没有批量删除功能。这意味着您必须:

  • 执行两个单独的删除调用
  • 确保任何代码加载映像都足够健壮,能够处理其中一个映像的缺失。通常,您可以通过按特定顺序删除图像来减少这种影响。例如:如果用户从缩略图中看到一幅完整大小的图像,那么首先删除缩略图可以确保应用程序即使在完整大小的图像仍然保留的情况下仍能工作
  • 运行定期进程以删除孤立文件

  • 您担心的糟糕用户体验是什么?这里您只删除了一个图像?在两个不同的URI(图像和缩略图)上调用此函数2次有什么问题?@Dougstevenson在客户端我有图像组件,它们首先加载缩略图,然后加载hq图像。在我的算法中,我首先删除这两幅图像,然后删除数据库中的相关文档。如果两个映像中的一个在删除时失败,那么我的代码将不会触及数据库并向客户端抛出一个错误,比如说“稍后重试”,以确保存储完全回收(如果用户稍后重试,那么两次删除可能会正常进行,并且存储中不会出现任何不必要的垃圾)...... 但是如果没有批量操作,如果缩略图没有被删除,但是hq图像是的,那么用户将在图像中看到缩略图,并且无法获得完整质量的缩略图(这是一个渐进加载的图像)。您担心的糟糕用户体验是什么?这里您只删除了一个图像?在两个不同的URI(图像和缩略图)上调用此函数2次有什么问题?@Dougstevenson在客户端我有图像组件,它们首先加载缩略图,然后加载hq图像。在我的算法中,我首先删除这两幅图像,然后删除数据库中的相关文档。如果两个映像中的一个在删除时失败,那么我的代码将不会触及数据库并向客户端抛出一个错误,比如说“稍后重试”,以确保存储完全回收(如果用户稍后重试,那么两次删除可能会正常进行,并且存储中不会出现任何不必要的垃圾)...... 但是如果没有批处理操作,如果没有删除缩略图,但是hq图像是,那么用户将在图像中看到缩略图,并且无法获得完全质量的缩略图(这是一个渐进加载的图像)