Хранение ссылок на изображения в Firestore

#google-cloud-firestore #google-cloud-storage #firebase-storage

#google-cloud-firestore #google-облачное хранилище #firebase-хранилище

Вопрос:

Я создаю блог с нуля. Я знаю, что firestore — это не место для хранения изображений, а облачное хранилище. Я узнал, что для их извлечения вам нужна только ссылка на изображения, которые вы храните в облачном хранилище, но должен ли я хранить ссылки, относящиеся к записи в блоге, в массиве или карте в этом документе записи в блоге в firestore? Или есть какой-нибудь лучший способ сделать это?

Комментарии:

1. Все, что лучше всего подходит для вашего приложения. Поскольку мы не знаем точно, как это работает, трудно понять, существует ли «правильный» способ. Я предлагаю просто выбрать тот, который соответствует вашим потребностям, и использовать его.

Ответ №1:

Сохраняя изображения в блоге Cloud Storage, вы должны подумать, хотите ли вы включить функцию их удаления.

Если вы сохраните их в массиве, а затем один из них будет удален, чтобы другие не могли изменить его ссылку, вы можете оставить там некоторый заполнитель, т. Е. «удалено».

Поэтому использование концепции, подобной dictionary из python, было бы гораздо более разумным, поэтому вы не возражаете против порядка элементов и их положения:

 images = {'image1': 'image1.jpg', 'image2', 'image2.jpg'}
file_img = images['image2']
with open(file_img, 'rb') as file:
    img = file.read()
  

Пожалуйста, имейте в виду, что облачное хранилище Google имеет некоторые ограничения на ИМЕНА хранимых объектов:

  1. При кодировке UTF-8 оно не может превышать 1024 байта
  2. Не может содержать возврат или перевод строки
  3. Не может содержать точку «.» или двойную точку «..»
  4. Не должно содержать управляющих символов
  5. Не следует использовать символы «#» или скобки «[«, «]»

Также разумно следовать рекомендациям для облачного хранилища Google с точки зрения именования и безопасности: т. Е. Избегать хранения конфиденциальных личных данных в именах объектов, к каким объектам открыт доступ.