如何构建Firebase管理员列表

时间:2017-07-31 05:05:11

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

我想在firebase中列出管理员列表。管理员用户应该能够通过电子邮件添加其他管理员。

理想情况下,我喜欢"列表"像这样:

"admins": {
  "a.b@gmail.com": true,
  "c.d@gmail.com": true
}

这样我就可以通过电子邮件轻松添加新的管理员,并使用有用的身份验证规则  (验证用户by email),如下所示:

".write": "root.child('admins').child(auth.email).val() === true"

但是我无法使用这样的列表,因为Firebase restricts special characters in keys

我该如何解决这个问题?

我的应用是客户端javascript(因此我无法使用firebase-admin)。

谢谢!

1 个答案:

答案 0 :(得分:1)

每个注册用户都有一个firebaseID,因此我会以这种方式构建您的数据:

"users": { // Here you store user's data
    "firebaseID1": {
        "email": "a.b@gmail.com"
    },
    "firebaseID2": {
        "email": "c.d@gmail.com"
    }
},
"admins": {
  "firebaseID1": true,
  "firebaseID2": true
}

如果您想获取给定电子邮件的用户的ID,您可以使用firebase' queries

firebase.database().ref("users").orderByChild("email").equalTo("a.b@gmail.com")

NB :firebase.com是旧网站,更新后的文档总是看firebase.google.com