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で記録されたユーザーデータを取得してグローバルに使用したいと考えています。

app.jsに一部が

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

未満では、ユーザfirebaseから内のノードです。 enter image description here

私はユーザーオブジェクトを取得していません。現在のユーザーのユーザーIDを取得することができます。

答えて

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(); 
}); 
関連する問題