【问题标题】:Get other users firebase for admin user?为管理员用户获取其他用户 Firebase?
【发布时间】:2018-02-03 10:59:55
【问题描述】:

我正在为我的 web 应用程序开发注册和登录功能。

所有注册用户在 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 的一种方式?或者我应该重新设计我的数据库吗?鉴于电子邮件可以包含特殊字符,如该问题的答案所述,使用电子邮件作为密钥似乎并不直接:

Referencing authentication db data in real time db firebase

【问题讨论】:

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


    【解决方案1】:

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

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

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

    添加新用户时不要忘记添加childListener,因此您必须更新本地用户列表

    1. 您可以使用 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 时才需要搜索。

    谢谢

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 2012-03-09
    • 2018-12-27
    • 1970-01-01
    相关资源
    最近更新 更多