firebase - FireStore : query the Firebase Auth table?

标签 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,所以实际上它们当然看起来不那么好:)

现在,这一切正常,我可以查询当前登录用户所属的对象,所有规则都有效等等。但是,现在我想在我的应用程序中显示成员列表。我如何为我的成员(member) map 中的用户查询 Firebase 身份验证系统?

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

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

最佳答案

使用客户端 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 Functions。然后,您需要从前端调用此云函数。

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

  • 您可以使用客户端 SDK 轻松查询此列表;
  • 您可以在用户配置文件文档中存储一些额外的信息,例如用户角色。事实上,使用 Admin SDK 的 listUsers()方法你得到的结果为 UserRecord 具有固定属性列表的对象。
  • 关于firebase - FireStore : query the Firebase Auth table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55902940/

    相关文章:

    javascript - 我无法从 Firebase Firestore 中的 Firebase Cloud Functions 写入数据

    firebase - 从 firebase 函数触发器访问 firebase 托管文件

    android - Firebase 动态链接总是返回已取消

    reactjs - react : Disconnecting firebase ref on componentWillUnMount

    android - Firestore - 如何更新 Android 键中包含句点 (.) 的字段?

    java - findViewByID 在 FirestoreRecyclerAdapter 中返回 null

    firebase - 如何通过 Flutter 在 Firestore 中添加 Geopoint、时间戳和对文档的引用

    javascript - Firestore - 将数组传递给 arrayUnion()

    java - Google Firebase 和 Dagger-2 无法工作

    javascript - 新用户的 Firebase 数据库安全