2017-12-15 3 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"

나는 name 내가 제공하는 곳 email 싶어. vue 앱에서 실행할 수 있어야하는 JavaScript의 솔루션이 필요합니다. 이 같은 기능은 appriciate 것입니다

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) 
      } 
    }) 

} 

이메일을 자주 사용하는 사용자를 검색하는 경우 더 나은 성능을 위해 인덱스를 정의하는 것이 더 좋습니다.

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

글쎄, 당신의 솔루션은 이름에'undefined'를 반환합니다. 그러나'snapshot.val() .name '을'snapshot.val()'로 변경하면 다음과 같은 객체를 반환합니다 : https://ibb.co/idYepm – prokawsar

+0

Seams에 데이터가 있습니다. 이것은 비동기 함수로 데이터를 검색하는 데 시간이 걸립니다. 따라서 데이터를 콘솔링하는 곳을 고려하십시오. – HakanC

+0

키를 반환하는 객체이기는하지만이 문제를 name = snapshot.val()을 사용하여 해결했습니다. name = Object.values ​​(name) name = name [0] .name' – prokawsar