FireStore: запросить таблицу аутентификации Firebase? - PullRequest
0 голосов
/ 29 апреля 2019

Я создаю приложение с помощью Firestore, где группа людей должна иметь возможность доступа к объекту, и я следовал руководству на https://firebase.google.com/docs/firestore/solutions/role-based-access. Итак, мой объект выглядит примерно так:

{
  title: "A Great Story",
  content: "Once upon a time ...",
  members: {
    alice: "host",
    bob: "player",
    david: "player",
    jane: "player"
  }
}

Эти ключи в members являются просто UID пользователя, поэтому в действительности они, конечно, выглядят не так хорошо:)

Теперь, все это работает нормально, я могу запрашивать объекты, в которые входит текущий зарегистрированный пользователь, все правила работают и все такое. Но теперь я хочу показать список участников в моем приложении. Как я могу запросить систему Firebase Auth для пользователей в моей карте участников?

И если это невозможно, каков "нормальный" способ решить эту проблему? У вас есть копия информации о пользователе (имя, адрес электронной почты, изображение профиля) в самом документе? Но как вы справляетесь с тем, что пользователь меняет какую-либо собственную информацию? Тогда в документе устарели старые данные ..

Я из традиционного мира реляционных баз данных, это мои первые шаги с базой данных / хранилищем данных NoSQL, поэтому мне не совсем понятно, как лучше структурировать мои пользовательские данные и поддерживать их в актуальном состоянии.

1 Ответ

1 голос
/ 29 апреля 2019

С помощью клиентских SDK невозможно составить список всех пользователей вашего проекта Firebase.

С другой стороны, Admin SDK позволяет получить весь список пользователей в пакетах, см. https://firebase.google.com/docs/auth/admin/manage-users#list_all_users. Обратите внимание, что если вы хотите использовать эту возможность, предлагаемую Admin SDK, вам нужно сделать это из «привилегированная среда» (см., например, https://firebase.google.com/docs/admin/setup), с облачной функцией. Вам потребуется от своего внешнего интерфейса вызвать эту облачную функцию.

Однако одним из классических подходов является ведение списка всех ваших пользователей в отдельной коллекции Cloud Firestore. У этого подхода есть несколько преимуществ, среди которых:

  • Вы можете легко запросить этот список с помощью клиентских SDK;
  • Вы можете сохранить дополнительную информацию в документе с профилями пользователей, например, пользовательские роли. Фактически, с помощью метода listUsers() Admin SDK вы получите результат в виде объекта UserRecord, который имеет фиксированный список свойств.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...