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

时间:2017-08-25 11:42:57

标签: firebase web firebase-realtime-database firebase-authentication

我正在为我的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 个答案:

答案 0 :(得分:2)

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

搜索数据的方法可能有多种。

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

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

      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时才需要进行搜索。

      由于