2017-07-31 46 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