我正在使用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的第一步,所以我还不清楚如何最好地构造用户数据并保持最新。
答案 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集合中维护所有用户的列表。这种方法有几个优点,其中:
listUsers()
方法,您可以将结果作为UserRecord
对象获得,该对象具有固定的属性列表。