2017-07-31 8 views
2

firebaseに管理者のリストを作成したいと思います。管理者のユーザーは、電子メールで他の管理者を追加できるはずです。Firebaseの管理者リストを構成する方法

理想的には、私はこのような「リスト」を希望:

"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を持っているので、私はこのようにデータを構造化します:

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

あなたはその電子メール与えられたユーザのIDを取得したい場合は、firebaseのqueriesを使用することができます。

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

NB:firebase.com更新されたドキュメントの古いウェブサイトは、常にfirebase.google.com

+1

ニックを見ていますe! 「ユーザー」リストを作成するにはどうしたらいいですか?彼がログインすると、すべてのユーザーが自分自身を書きますか?または、何とか自動的に生成することはできますか? @devid – Hibuki

+1

あなたは間違った電子メールを設定するのを避けるために、セキュリティ[rules](https://firebase.google.com/docs/database/security/)を使って、すべてのユーザが最初にログインして自分のエントリを作成させることができます。 firebaseの認証トリガーで[クラウド機能](https://firebase.google.com/docs/functions/)を使用することもできます:) –

+1

小さな型: "equalsTo" [should be](https://firebase.google .com/docs/reference/js/firebase.database.Query) "equalTo" @Devid – Hibuki

関連する問題