#google-cloud-storage #google-api-nodejs-client
#google-облачное хранилище #google-api-nodejs-client
Вопрос:
Документация Google Storage рассказывает об управлении версиями объектов. Существует два вида версий объекта: текущие и неточные.
gsutil
разрешить перечисление как текущих, так и текущих версий с помощью -a
switch: https://cloud.google.com/storage/docs/using-object-versioning#list .
Кроме того, я могу перечислить все версии программно, указав versions: true
параметр для Bucket.getFiles
метода.
Однако я не нашел никакого способа программно выяснить, является ли конкретная версия объекта текущей или неточной. Похоже, в объекте File для этого нет свойства или метода.
Каков правильный способ выяснить это для данного File
экземпляра?
Ответ №1:
Просматривая REST API, нет состояния для текущей / неточной версии объектов. У вас есть номер генерации для каждого представления ресурса объекта.
Я предполагаю, что вы должны применить для этого алгоритм
- Используйте List API (GetFiles) для одного объекта с параметром version равным true
- Самое высокое поколение — это текущая версия, остальные — неточные
- Кроме того, что timeDeleted заполняется для самого высокого поколения (временная метка удаления текущей версии). Поэтому все версии являются неточными.
Комментарии:
1. Спасибо,
timeDeleted
ключ метаданных кажется правильным ответом. Кроме того,gsutils ls -L
илиgsutils stat
показывать то же время,Noncurrent time
что и . Однако, чтобы быть принятым, этот ответ должен быть немного отредактирован, посколькуtimeDeleted
одного достаточно без сравнения номеров поколений.2. Правильно, я забыл несколько слов (и исправил). Время, указанное в самом высоком номере версии, означает, что все версии являются неточными.
3. Спасибо. В моем коде я перечисляю версии не для одного объекта , а для всех объектов в корзине с версиями. И для каждого файла (объекта) Я полагаюсь
timeDeleted
только на метаданные.4. Кстати, я обнаружил, что поля метаданных задокументированы здесь и здесь .