Firestore - хорошая практика использовать uid FirebaseAuth в качестве индекса документа для дальнейших связей - PullRequest
2 голосов
/ 17 июня 2020

У меня простой вопрос относительно того, рекомендуется ли использовать uid службы FirebaseAuth для отношений в других коллекциях в качестве индекса документа. Итак, при входе в систему я получаю uid FirebaseUser. С этим я создаю пользователя следующим образом:

create user

Теперь это хорошая практика - использовать этот uid в качестве индекса другого документа где-нибудь в другой коллекции. вот так:

sub_collection

Или более распространено создание индекса и добавление поля uid внутри документа, чтобы я мог запросить это с 'uid' equal 'my_uid', например?

Я пришел со стороны SQL, и у меня нет такого большого опыта в отношении No SQL и того, как его хорошо структурировать. Было бы здорово, если бы кто-нибудь дал мне здесь совет.

1 Ответ

1 голос
/ 17 июня 2020

Повторное использование одного и того же идентификатора документа в разных коллекциях вовсе не проблема, независимо от того, является ли этот идентификатор идентификатором пользователя (из Auth) или любым другим значением (включая автоматически сгенерированный идентификатор Firestore).


Или более распространено создание индекса и добавление поля uid внутри документа, чтобы я мог запросить его, например, с 'uid', равным 'my_uid'?

Это также распространенный подход, который может быть интересен, например, если вы не хотите отображать значение идентификатора документа Firestore (например, в URL-адресе типа https://www.whatever.com/players/-useruid- или https://www.whatever.com/players/-playername-).

Обратите внимание, однако, что это может вызвать некоторые «хитрые» побочные эффекты: например, если вы хотите избежать двух профилей пользователей с одинаковыми user_name , чтобы проверить это в транзакции , вам необходимо использовать user_name в качестве идентификатора документов, поскольку с клиентскими SDK невозможно выполнить запрос внутри транзакции (вы необходимо определить DocumentReference для перехода к методу транзакции get()).

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