2017-08-25 80 views
0

我正在为我的web应用程序的注册和登录功能。获取其他用户firebase的管理员用户?

所有注册用户在firebase auth db中都有一封电子邮件和UID。 UID被用作firebase实时数据库的关键。在火力实时数据库

users 
| 
|--UID1 
    | 
    |---Name:Amanda 
    |---Surname:Waller 
    |---age:30 
    |---email:[email protected] 
|--UID2 
    | 
    |---Name:MyName 
    |---Surname:Mysurname 
    |---age:39 
    |---email:[email protected] 

以下JSON结构现在我谁需要访问其他用户的数据,例如管理员想要搜索和检索与电子邮件用户的管理员用户[email protected],但我选择的JSON密钥是UID,有没有办法让管理员用户根据用户的电子邮件ID获取UID?或者我应该重新设计我的数据库?使用电子邮件作为重点并没有真正似乎直截了当给该电子邮件可以包含特殊字符在回答这个问题说:

Referencing authentication db data in real time db firebase

回答

2

您的数据库结构似乎好来获取数据。

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

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

不要忘记添加childListener时添加新用户,所以你必须更新本地用户列表

  • 您可以使用火力API来获取仅与特定记录中指定的值,如:
  • \

    firebaseDB 
          .ref("Users") 
          .orderByChild("email") 
          .equalTo("[email protected]") 
          .once('value') 
          .then((snapshot) => { 
           //Received Snapshot 
          }) 
          .catch(er => console.log(JSON.stringify(er))); 
    

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

    谢谢

    +0

    以上回答是正确的。你可以看到类似的信息这个问题https://stackoverflow.com/questions/40713137/querying-below-autoids-in-firebase – DoesData

    相关问题