FireStore:查询Firebase Auth表?

时间:2019-04-29 12:00:13

标签: firebase 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"
  }
}

members中的那些键只是用户UID,所以实际上它们看起来并不那么好:)

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

如果不可能,那么解决此问题的“正常”方法是什么?在文档本身中是否有用户信息的副本(名称,电子邮件,个人资料图片)?但是,如何处理用户更改自己的任何信息?然后,文档中就有陈旧的数据。

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

1 个答案:

答案 0 :(得分:1)

使用客户端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 Function)中进行。然后,您需要从前端调用此Cloud Function。

但是,经典方法之一是在专用的Cloud Firestore集合中维护所有用户的列表。这种方法有几个优点,其中:

  • 您可以使用客户端SDK轻松查询此列表;
  • 您可以在用户个人资料文档中存储一些其他信息,例如用户角色。实际上,使用Admin SDK的listUsers()方法,您可以将结果作为UserRecord对象获得,该对象具有固定的属性列表。