FirebaseStorage: удаление папки и всего ее содержимого с помощью node.js

Я хочу удалить папку Firebase Storage и все ее содержимое с помощью node.js/Firebase Admin SDK, но не могу.

Аналогичный вопрос был задан в группе google ниже около года назад, и мне интересно, есть ли решение сейчас:

https://groups.google.com/forum/#!topic/firebase-talk/aG7GSR7kVtw

Я могу удалить один файл, используя приведенный ниже пример node.js:

https://mzmuse.com/blog/how-to-upload-to-firebase-storage-in-node

Но я не могу удалить папку и все ее содержимое.

Любые идеи? Я что-то упускаю?

Вот код, который я использую

const keyFilename="path/to/my/private.json";
const projectId = "myprojectid";
const bucketName = `${projectId}.appspot.com`;

const gcs = require('@google-cloud/storage')({
    projectId,
    keyFilename
});
const bucket = gcs.bucket(bucketName);

ЭТО РАБОТАЕТ ОТЛИЧНО — удаление одного файла

const deleteFile = 'users/user1/folder1/IMG_1.JPG'
const gcFile = bucket.file(deleteFile);
gcFile.delete((err,res)=>console.log(err||res));

ЭТО НЕ РАБОТАЕТ — удаление папки и содержимого

const deleteFolder = 'users/user1/'
const gcFolder = bucket.file(deleteFolder);
gcFolder.delete((err,res)=>console.log(err||res));

--

ЭТО НЕ ОБМАН, КАК УКАЗАЛИ НЕКОТОРЫЕ УЧАСТНИКИ

Мой вопрос относится к node.js, а ответ дан для Java.

ОБНОВИТЬ

Я нашел эту страницу на облачном сайте Google, где они показывают способ удаления всех файлов в каталоге (папке).

https://googlecloudplatform.github.io/google-cloud-node/#/docs/google-cloud/0.56.0/storage/bucket?method=deleteFiles

bucket.deleteFiles({
  prefix: 'images/'
}, function(err) {
  if (!err) {
    // All files in the `images` directory have been deleted.
  }
});

Но я все еще не могу удалить саму папку


person Luis Cabrera    schedule 16.07.2017    source источник
comment
Вы не можете сделать это программно. Прочтите ответ на дубликат, чтобы понять, почему на самом деле в корзине Cloud Storage нет папок. В настоящее время единственный способ удалить все файлы в расположении — использовать командную строку gsutil.   -  person Doug Stevenson    schedule 16.07.2017
comment
Хотя это вопросы Swift, ответы применимы и содержат действительно полезную информацию, которая отвечает на вопрос: Этот и Еще один и Эта группа Google   -  person Jay    schedule 20.07.2017
comment
По состоянию на июль 2019 года вы можете перечислить папку и рекурсивно удалить ее содержимое, см. мой ответ здесь: stackoverflow.com/questions/37749647/   -  person Miki    schedule 02.07.2019


Ответы (1)


Из этот пост:

Вы можете удалить только все ведро, но не можете удалить папку в ведре.

Используйте GcsService для удаления файлов или папок.

Строка BucketName = "bucketname.appspot.com";

GcsService gcsService = GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance());
gcsService.delete(new GcsFilename(bucketName, "test"));
person coderpc    schedule 16.07.2017