0

私はFirebaseを初めて使用しており、角度のあるプロジェクトで作業しています。私はFirebaseのcurrentUserUID(ログインコンポーネント以外のコンポーネント)にアクセスしたいです。ログイン後にFirebaseの現在のユーザuidを取得する方法はありますか?

ログインした後、Firebase auth().onAuthStateChanged()メソッドを使用してこれを行うことができることがわかりましたが、これでログインした後でもログインコンポーネントからだけuidにアクセスできます。しかし、私は別のコンポーネントにそのuidが必要です。

私はそのuidを使用してデータベースを照会する必要があります。私はそれを行う最善の方法を見つけることができませんでした。私が理解した1つの方法は、uidを保存して他のコンポーネントと共有することでしたが、これは良い方法ではありません。

My Firebase database looks like this

階層は、だから私は、現在のユーザーのUIDを必要とするデータにアクセスするための

uid-->random_id_1-->{data} 
    -->random_id_2-->{data} 

です。私は別の角度成分でそれをしたい。

答えて

1

適切Get the currently signed-in userというタイトルのセクションから:現在のユーザーを取得するための推奨方法はAuthオブジェクトのオブザーバを設定することである

firebase.auth().onAuthStateChanged(function(user) { 
    if (user) { 
    // User is signed in. 
    } else { 
    // No user is signed in. 
    } 
}); 

...

また、を使用して現在ログインしているユーザーを取得することもできますプロパティ。ユーザーが署名されていない場合は、CurrentUserにはnullです:

var user = firebase.auth().currentUser; 
if (user) { 
    // User is signed in. 
} else { 
    // No user is signed in. 
} 
+0

感謝。私は数回前にそれを調べましたが、ログインコンポーネントだけで動くと思いました。私は別のコンポーネントで同じことを試してみました。したがって、基本的に(別のコンポーネントの)currentUserにアクセスする場合は、このオブザーバを使用する必要があります。私が間違っているなら私を訂正してください。 –

+0

上記の最初のスニペットは、認証ステートが変更されるたびに呼び出されるオブザーバです。たとえば、あなたがこれを使用するとします。ユーザーがログアウトしたときに特に何かしたい2番目のスニペット**は現在のユーザーを取得します。これを使用して、ユーザーがログインしているかどうかを確認したり、ユーザーの身元を取得したりできます。 –

+0

ログイン後に別のコンポーネントに移動すると、2番目のスニペットはnullになります。別のコンポーネントでは、別のページを意味します。これで、最初のスニペットを使用して、ナビゲートするすべてのコンポーネントでcurrentUserを取得できるようになりました。 –

関連する問題