2017-07-31 47 views
2

我想在火力管理员列表。管理员用户应该可以通过电子邮件添加其他管理员。如何构建一个火力地堡管理员列表

理想情况下,我想一个“清单”是这样的:

"admins": { 
    "[email protected]": true, 
    "[email protected]": true 
} 

这让我很容易地通过电子邮件添加新的管理员,并使用有效的身份验证规则 (即验证用户by email)像这样:

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

但我不能使用这样的列表,因为Firebase restricts special characters in keys

我该如何解决这个问题?

我的应用程序是客户端JavaScript(所以我不能使用firebase-admin)。

谢谢!

回答

1

每个注册用户都有一个firebaseID,所以我会组织你的数据是这样的:如果你想获得用户的ID给它的电子邮件,您可以使用

"users": { // Here you store user's data 
    "firebaseID1": { 
     "email": "[email protected]" 
    }, 
    "firebaseID2": { 
     "email": "[email protected]" 
    } 
}, 
"admins": { 
    "firebaseID1": true, 
    "firebaseID2": true 
} 

火力的queries

firebase.database().ref("users").orderByChild("email").equalTo("[email protected]") 

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

+1

尼克电子!你将如何去创建“用户”列表?每个用户在登录时自己写信给自己?或者它可以以某种方式自动生成? @devid – Hibuki

+1

可以让每一个用户创建在第一次登录自己的入门使用安全性的规则[](https://firebase.google.com/docs/database/security/),以避免用户设置错误的电子邮件。您也可以使用[云功能(https://firebase.google.com/docs/functions/)与火力权威性触发:) –

+1

小类型0:“equalsTo” [应](https://firebase.google .com/docs/reference/js/firebase.database.Query)“equalTo”@Devid – Hibuki