首页 文章

获取管理员用户的其他用户firebase?

提问于
浏览
0

我正在为我的webapp注册和登录功能 .

所有注册用户在firebase auth db中都有一封电子邮件和UID . UID用作firebase实时数据库中的密钥 . firebase实时db中的以下json结构

users
|
|--UID1
   |
   |---Name:Amanda
   |---Surname:Waller
   |---age:30
   |---email:abc@gmail.com
|--UID2
   |
   |---Name:MyName
   |---Surname:Mysurname
   |---age:39
   |---email:xyz.aaa@gmail.com

现在我有一个管理员用户需要访问其他用户数据,例如管理员希望用电子邮件xyz.aaa@gmail.com搜索和检索用户,但我选择的JSON密钥是UID,有没有办法管理员用户根据用户的电子邮件ID获取UID?或者我应该重新设计我的数据库?鉴于电子邮件可以包含此问题的答案中所述的特殊字符,因此使用电子邮件作为密钥似乎并不简单:

Referencing authentication db data in real time db firebase

1 回答

  • 2

    您的数据库结构似乎很适合获取数据 .

    可以有多种搜索数据的方法 .

    • 下载所有用户并将其保存在内存中,当管理员搜索电子邮件ID时,您可以搜索本地存储并获取uID .

    Don't forget to add a childListener when new user is added so you have to update the local user list

    • 您可以使用firebase API仅获取具有指定值的特定记录,如:

    \

    firebaseDB
                .ref("Users")
                .orderByChild("email")
                .equalTo("xyz.aaa@gmail.com")
                .once('value')
                .then((snapshot) => {
                    //Received Snapshot
                })
                .catch(er => console.log(JSON.stringify(er)));
    

    在第二种方法中,您需要为firebase数据库规则中的电子邮件值编制索引,并且只有在管理员输入完整的电子邮件ID时才需要搜索 .

    谢谢

相关问题