0

사실 현재 포털에 로그인 한 사용자의 데이터를 전 세계에서 사용하고 싶습니다. 아래 코드는 내가 작성한 코드입니다.firebase : 사용자 인증 데이터가 정의되지 않았지만 uid가 올바르게 검색 중입니다.

여기에 표시된대로 사용자를 생성 한 후 firebase 데이터베이스에 userdata를 저장했습니다!

firebase.auth().createUserWithEmailAndPassword(email,password).then(function(userData) 
    { 
    console.log("Successfully Created user with uid:",userData.uid); 
     var user ={ 
     uid:userData.uid, 
     email:email, 
     first_name:first_name, 
     last_name:last_name, 
     location:location, 
     fav_genres:fav_genres, 
     fav_artists:fav_artists 
     } 
     var userRef =fbRef.child('users'); 
     userRef.push().set(user); 
    req.flash('success_msg','you are registered now, You can login'); 
    res.redirect('/users/login'); 
    }).catch(function(error) 
    { 
    res.write 
    ({ 
     code: error.code 
    }); 
    res.status(401).end(); 
    }); 
} 
}); 

이제 응용 프로그램의 모든 페이지에 대해 currenly로 로그인 한 userdata를 전역으로 검색하고 싶습니다.

app.get('*',function(req,res,next){ 
    if(firebase.auth().currentUser!=null) 
    res.locals.user = firebase.auth().currentUser; 
}); 

아래 중포 기지에서 사용자의 노드는 이하 의 일부가 app.js

이다. enter image description here

하지만 사용자 개체를 가져 오지 못했습니다. 현재 사용자의 uid 만 가져올 수 있습니다. 제게이 메시지를 제안하십시오.

답변

0

다음과 같이 orderByChild() 함수를 사용하여 문제를 파악할 수 있습니다.

app.get('*',function(req,res,next){ 

    if(firebase.auth().currentUser!=null){ 
    var id = firebase.auth().currentUser.uid; 
    var profileRef = fbRef.child('users'); 
    // order by uid and then find the specific uid 
    var query = profileRef.orderByChild('uid').equalTo(id); 
    // Do a one time read of that uid 
    query.once('value', function(snap){ 
    var user = JSON.stringify(snap.val()); 
    console.log('User data is: '+user); 
    res.locals.user = JSON.stringify(snap.val()); 
}); 
} 
next(); 
});