Czy istnieje jakaś opcja, aby usunąć podfoldery i pliki z prefiksem i limitem, ponieważ uzyskanie błędu z powodu ograniczonych zasobów / pamięci podczas usuwania za pomocą prostego prefiksu.

const removeFolderFromBucket = folderPath => {
    return new Promise((resolve, reject) => {
      return storage.bucket(bucketName).deleteFiles({ prefix: folderPath, force: true }, function(error) {
        if (error) {
          console.error(`Failed to remove folder: ${folderPath}. Error :${error}`);
          // reject(error);
        }
        resolve({ status: "ok", code: 200 });
      });
    }).catch(error => {
      console.error(`Failed to remove folder: ${folderPath} in promise catch. Error: `, error);
      // throw error;
    });
  };

Mogę więc skorzystać z funkcji w rekurencji z ograniczeniem czeka / obietnicy i brak problemów z powodu liczby podfolderów i plików posiadających na ścieżce folderów (prefiks).

Z góry dziękuję.

0
Subhash Kumar 4 sierpień 2020, 12:03

1 odpowiedź

Najlepsza odpowiedź

Mam rozwiązanie, ale nie wiem - czy to dobre i lepsze podejście? Proszę zobaczyć i sugerować.

while (true) {
  const [files] = await storage
    .bucket(bucketName)
    .getFiles({ prefix: path, maxResults: 50 });
  const fileCount = files.length;
  for (const file of files) {
    await file.delete();
  }
  if (fileCount < 50) {
    break;
  }
}
1
Subhash Kumar 4 sierpień 2020, 12:22