Попытка сделать так, чтобы каждый пользователь мог создавать и читать свои собственные данные.
Я работаю все так же, как в этом уроке, но он не работает, как там:
https://angularfirebase.com/lessons/managing-firebase-user-relationships-to-database-records/
Моя база данных имеет следующую структуру:
-|items
-|userId
-|itemId
Это мой сервис:
userId: string;
constructor(private db: AngularFireDatabase, private afAuth: AngularFireAuth) {
this.afAuth.authState.subscribe(user => {
if(user) this.userId = user.uid
})
}
И пример функции в службе, которая получает элементы из базы данных:
getRelays(): Observable<any[]> {
if(!this.userId) return;
this.relaysRef = this.db.list('relays/' + this.userId)
return this.relaysRef.snapshotChanges().pipe(
map(changes =>
changes.map(c => ({ $key: c.payload.key, ...c.payload.val() }))
)
);
}
Я хочу получить доступ к идентификатору текущего пользователя в компоненте, чтобы я мог получать элементы, основанные на текущем пользователе, но переменная userId
работает только внутри подписки и возвращает неопределенное значение вне ее.
Вот так я могу войти и выйти (в другом компоненте):
login() {
this.afAuth.auth.signInWithPopup(new auth.GoogleAuthProvider());
}
logout() {
this.afAuth.auth.signOut();
}
Спасибо за помощь!