Google Cloud Firestore - Как отобразить часть всего документа - PullRequest
0 голосов
/ 15 сентября 2018

Иногда мы не хотим показывать конечному пользователю весь документ. Например - скажем, у нас есть коллекция users, и у каждого user есть свойство email. Последнее, что мы хотим сделать, это отобразить электронные письма пользователей друг другу.

Таким образом, в RTDB это было просто , поскольку оно не структурировано как коллекция / документ.

В Cloud Firestore это не так просто, как RTDB. Вы не можете фильтровать документ в соответствии с вашими потребностями, как указано в их документах :

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

Итак, я подумал о 2 альтернативах:

1. Разделите коллекцию user на вложенные коллекции public и private.

  • Плюсы - Вы можете иметь различные правила для public и private. Другими словами - вы можете запретить другим пользователям просматривать private документ другого пользователя.
  • Минусы - Когда вы просто хотите получить весь документ пользователя, вам нужно будет сделать 2 чтения вместо одного, а затем объединить их ответ (при условии, что вы не получите никаких ошибок ).

2. Управлять фильтрацией пользователя в бэкэнде (используя Admin SDK).

  • Плюсы - Таким образом, я читаю только один документ, и мне не нужно разбивать свой документ на объекты.
  • Минусы - Я не нашел способа подписаться на желаемую облачную функцию (хочу прослушать изменения).

Я знаю, что нет единого пути для достижения определенных целей, но я хотел бы знать, есть ли более традиционный подход к достижению того, что я пытаюсь сделать.

1 Ответ

0 голосов
/ 15 сентября 2018

Ваш первый вариант является наиболее распространенным, но если он не работает для вашего случая, не используйте его.

Имейте в виду, что с вашим вариантом # 2 вы добавляете сложность к обоимклиент и сервер.Кроме того, вы теряете кэширование на стороне клиента, что может значительно сэкономить на производительности и выставлении счетов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...