是否为管理员用户获取其他用户firebase?

是否为管理员用户获取其他用户firebase?,firebase,web,firebase-realtime-database,firebase-authentication,Firebase,Web,Firebase Realtime Database,Firebase Authentication,我正在为我的webapp开发注册和登录功能 所有注册用户在firebase auth db中都有电子邮件和UID。UID用作firebase实时数据库中的密钥。firebase实时数据库中的以下json结构 users | |--UID1 | |---Name:Amanda |---Surname:Waller |---age:30 |---email:abc@gmail.com |--UID2 | |---Name:MyName |---Surn

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

所有注册用户在firebase auth db中都有电子邮件和UID。UID用作firebase实时数据库中的密钥。firebase实时数据库中的以下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?或者我应该重新设计数据库?使用电子邮件作为密钥似乎并不直接,因为电子邮件可能包含此问题答案中所述的特殊字符:


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

可以有多种方法来搜索数据

  • 下载所有用户并将其保存在内存中,当管理员搜索电子邮件id时,您可以搜索本地存储并获取uID
  • 添加新用户时,不要忘记添加
    childListener
    ,因此您必须更新本地用户列表

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

    在第二种方法中,您需要在firebase数据库规则中索引电子邮件值,并且只需要在管理员输入完整电子邮件id时进行搜索


    谢谢

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

    可以有多种方法来搜索数据

  • 下载所有用户并将其保存在内存中,当管理员搜索电子邮件id时,您可以搜索本地存储并获取uID
  • 添加新用户时,不要忘记添加
    childListener
    ,因此您必须更新本地用户列表

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

    在第二种方法中,您需要在firebase数据库规则中索引电子邮件值,并且只需要在管理员输入完整电子邮件id时进行搜索


    谢谢

    以上答案是正确的。你可以看到这个问题的类似信息上面的答案是正确的。您可以查看此问题以了解类似信息
    firebaseDB
                .ref("Users")
                .orderByChild("email")
                .equalTo("xyz.aaa@gmail.com")
                .once('value')
                .then((snapshot) => {
                    //Received Snapshot
                })
                .catch(er => console.log(JSON.stringify(er)));