2017-12-15 11 views
1

firebaseを初めて使用しています。私はvueとfirebaseでアプリを作っています。ここで私はこのスナップのような 'ユーザー'を参照している。firebaseの特定の値でデータを取得

テキストで

enter image description here

-L0PZ870WKlPC2BpRxbw email: "[email protected]" name: "Carol Howard" -L0P_xMlFVxOFuQ0yHne email: "[email protected]" name: "Alvin Boyd"

私が提供されますemailnameを取得したいです。 vueアプリケーションで実行できる必要があるJavaScriptのソリューションが必要です。このような機能は、おしゃれなものになるでしょう

function(email){ // some code return name } どうすればいいですか?

答えて

0

ここでは、ユーザーメールをお持ちの場合、次のようにユーザー名を取得できます。あなたは電子メールで、多くの場合、ユーザーが検索している場合

getNameByEmail(email) { 
     var db = firebase.database(); 
     var ref = db.ref('users').orderByChild('email').equalTo(email); 
     ref.once('value', snapshot => { 
      if (snapshot.exists()) { 
       var name = snapshot.val(); 
       name = Object.values(name); 
       name = name[0].name; 
       console.log('User email : ' + email + ' User name: '+ name); 
      } else { 
       console.log('There is no user who has email like '+ email) 
      } 
    }) 

} 

は場合は、その後、より良いパフォーマンス設定databseルールが好きな、より良いのインデックスを定義します。

{ 
    "rules": { 
    ".read": true, 
    ".write": "auth != null", 
    "users": { ".indexOn": ["email"] } 
    } 
} 
+0

あなたのソリューションは名前に 'undefined'を返します。しかし、 'snapshot.val().name'を' snapshot.val() 'に変更すると、次のようなオブジェクトが返されます。https://ibb.co/idYepm – prokawsar

+0

あなたにはデータがあります。これは非同期関数であり、データの取得には時間がかかります。したがって、データをどこでコンソール化するかを検討してください。 – HakanC

+0

キーを返すオブジェクトですが、私はこの問題をname = snapshot.val()を使って解決しました。 name = Object.values(name) name = name [0] .name' – prokawsar

関連する問題