FireStore:查询 Firebase Auth 表?

Kev*_*ers 4 firebase google-cloud-platform google-cloud-firestore

我正在使用 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"
  }
}
Run Code Online (Sandbox Code Playgroud)

这些键members只是用户 UID,所以实际上它们当然看起来不太好:)

现在,这一切都工作正常,我可以查询当前登录用户所属的对象,所有规则都有效。但是,现在我想在我的应用程序中显示成员列表。如何在 Firebase Auth 系统中查询我的会员地图中的用户?

如果这是不可能的,那么解决这个问题的“正常”方法是什么?文档本身中有用户信息(姓名、电子邮件、个人资料图片)的副本吗?但是,如何处理用户更改自己的信息呢?那么该文档有陈旧的旧数据..

我来自传统的关系数据库世界,这是我使用 NoSQL 数据库/Firestore 的第一步,因此我不太清楚如何最好地构建我的用户数据并使其保持最新。

Ren*_*nec 6

使用客户端 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轻松查询此列表;
  • 您可以在用户配置文件文档中存储一些额外的信息,例如用户角色。事实上,使用 Admin SDK 的listUsers()方法,您可以将结果作为UserRecord对象获得,该对象具有固定的属性列表。