Как получить файлы из корзины Google Cloud Storage на основе регулярного выражения? - PullRequest
0 голосов
/ 20 октября 2018

Я пытаюсь получить файлы из облачного хранилища Google.Имя файла выглядит примерно так: 20180618_1400/SOMEID_20180618.jpg, 20180618_1200/SOMEID_20180618.jpg, 20180617_1400/SOMEOTHERID_20180617.jpg и т. Д.

Я хочу получить файлы на основе SOMEID.Я попытался использовать следующий код с reg exp

bucket.getFiles({ prefix: new RegExp(`[0-9_]*\/SOMEID_`), }, (err, files) => { if (err) return reject(err); resolve(files); });

Ожидаемый результат - файлы 20180618_1400/SOMEID_20180618.jpg и 20180618_1200/SOMEID_20180618.jpg.Но код возвращает все файлы в корзине.

Я искал в интернете, но ничего не нашел.

Есть ли другой способ добиться этого?

1 Ответ

0 голосов
/ 20 октября 2018

Префикс должен быть строкой.Это префикс, а не регулярное выражение.Я посмотрел, чтобы быть уверенным в документации , и, как и ожидалось, это невозможно.

Правильный способ сделать это в GCS - структурировать ваш контейнер с префиксом пути следующим образом:строка пригодна для использования.Например, имея каталог для изображения профиля, другой для pdf, ... И все файлы именуются с вашим идентификатором пользователя.

Пример:

profiles/1245.jpg
profiles/7561.jpg
billing/1245-2018-10.pdf
billing/1245-2018-09.pdf
billing/7561-2018-10.pdf
...

Если вы не можете, вы будетенужно получить все предметы и применить к ним свое регулярное выражение.У вас есть пример в конце getFiles() документации

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

...