Мой вопрос похож на этот как получить список файлов в папке облачного хранилища Google с помощью node js.

Только я пытаюсь просто получить объекты верхнего уровня. Я пытаюсь следовать здесь файлы образцов хранилища nodejs. js, и когда я пробую разные комбинации «префикса» и «разделителя», мне трудно просто получить объекты верхнего уровня. Я пробовал префикс "" с разделителем "/". Я пробовал префикс "/" с разделителем "/". Я попробовал префикс «/» без разделителя. Кажется, ничего не работает, чтобы позволить мне получить только список объектов верхнего уровня. Кажется, я всегда получаю все файлы во всем ведре. Любые идеи о том, какие правильные параметры для префикса и разделителя могут работать? Есть ли другие варианты, о которых я не знаю, которые могут помочь?

Чтобы быть немного более конкретным, учитывая следующие капли:

  • folder1 / file1.txt
  • папка2/файл2.txt

Я просто хочу

  • folder1 /
  • folder2 /

Я пробовал пару вещей:

Префикс: "", разделитель: "", результаты:

  • folder1 /
  • folder1 / file1.txt
  • folder2 /
  • папка2/файл2.txt

Префикс: "", разделитель: "/", результаты:

  • Нет результатов...

Префикс: "/", разделитель: "", результаты:

  • Нет результатов...

Префикс: "/", разделитель: "/", результаты:

  • Нет результатов...

Префикс: "folder1/", разделитель: "", результаты:

  • folder1 /
  • folder1 / file1.txt

... как я и ожидал; однако снова я не могу найти правильную комбинацию префикса и разделителя, чтобы просто получить два верхних результата объекта, которые я хочу:

  • folder1 /
  • folder2 /
0
Sean W. 17 Ноя 2019 в 02:18
В ваших примерах и когда вы говорите, что "ничего не работает"... какой вывод получается для каждого примера? Чтение документов, кажется, говорит, что префикс «» и разделитель «/» могут работать ... что вы нашли?
 – 
Kolban
17 Ноя 2019 в 03:20
Спасибо за ваш ответ. Я обновил свой OP этими дополнительными деталями.
 – 
Sean W.
17 Ноя 2019 в 07:59

1 ответ

Я думаю, что я, наконец, нашел ответ. Ответ находится на другом сайте для их документации. В частности, этот сайт и эта страница (для Bucket.getFiles()). В их примере показан обратный вызов с аргументами (err, files, nextQuery, apiResponse). Что странно, потому что даже этот сайт не упоминает nextQuery и apiResponse в качестве параметров для GetFilesCallback.

Я хочу использовать async/await и try/catch в своем приложении, поэтому беру примеры кода на getFiles, я сделал вывод, что могу получить то, что мне нужно, выполнив следующие действия:

const [files, nextQuery, apiResponse] = await storage.bucket(bucketName).getFiles({autoPaginate: false, delimiter: "/", prefix: ""});

А потом лично я обнаружил, что данные внутри "apiResponse" гораздо полезнее, чем в файлах. То, что я искал, было в apiResponse.items и apiResponse.prefixes.

Я просто очень удивлен, что ни одна из документации не показывает, как должен выглядеть этот apiResponse, а страница GetFilesCallback даже не показывает его в качестве возможного параметра. В любом случае я смог найти то, что искал. Я думаю, что в моем случае использования я буду использовать этот параметр обратного вызова apiResponse чаще, чем параметр files.

3
Sean W. 17 Ноя 2019 в 20:34
Спасибо, это сработало. Папки находились под apiResponse.prefixes
 – 
Adi
24 Окт 2021 в 15:32