从 angularfire 检索 UID
Retrieving UID from angularfire
我用的是最新版的angularfire。我看这个主题,有一些解决方案,但他们正在解决旧的 angularfire。
我如何从 angularfire 检索用户 ID?
注意:我试过这段代码,但它不起作用:
this.users = this.db.collection<User>('users').doc(auth.currentUser.then((e) => e?.uid)).valueChanges();
我的 firebaseService 代码:(使用此代码,它获取所有用户信息。我需要当前用户数据)。
export class FirebaseService {
usersCollection: AngularFirestoreCollection<User>;
users: Observable<User[]>;
isLoggedIn = false;
constructor(public auth: AngularFireAuth, public db: AngularFirestore) {
this.users = this.db.collection<User>('users').valueChanges();
}
async signInWithEmailandPassword(email: string, password: string) {
await this.auth.signInWithEmailAndPassword(email, password).then((res) => {
this.isLoggedIn = true;
localStorage.setItem('user', JSON.stringify(res.user));
});
}
async signUpWithEmailandPassword(email: string, password: string) {
await this.auth
.createUserWithEmailAndPassword(email, password)
.then((res) => {
this.isLoggedIn = true;
localStorage.setItem('user', JSON.stringify(res.user));
var user = res.user;
this.db
.collection('users')
.doc(user?.uid)
.set({
email: user?.email,
uid: user?.uid,
})
.catch((e) => console.log(e));
});
}
logout() {
this.auth.signOut();
localStorage.removeItem('user');
}
getUsers() {
return this.users;
}
}
您需要反转关系,首先从用户的可观察对象开始,然后将其映射到 valueChanges。
auth.user.pipe(
switchMap(user => {
if (!user) { return EMPTY; }
return this.db.collection<User>('users').doc(user.uid)).valueChanges()
})
)
请记住用户未登录的情况,就像我在此处所做的那样,除非您正在守卫路线。
我用的是最新版的angularfire。我看这个主题,有一些解决方案,但他们正在解决旧的 angularfire。 我如何从 angularfire 检索用户 ID?
注意:我试过这段代码,但它不起作用:
this.users = this.db.collection<User>('users').doc(auth.currentUser.then((e) => e?.uid)).valueChanges();
我的 firebaseService 代码:(使用此代码,它获取所有用户信息。我需要当前用户数据)。
export class FirebaseService {
usersCollection: AngularFirestoreCollection<User>;
users: Observable<User[]>;
isLoggedIn = false;
constructor(public auth: AngularFireAuth, public db: AngularFirestore) {
this.users = this.db.collection<User>('users').valueChanges();
}
async signInWithEmailandPassword(email: string, password: string) {
await this.auth.signInWithEmailAndPassword(email, password).then((res) => {
this.isLoggedIn = true;
localStorage.setItem('user', JSON.stringify(res.user));
});
}
async signUpWithEmailandPassword(email: string, password: string) {
await this.auth
.createUserWithEmailAndPassword(email, password)
.then((res) => {
this.isLoggedIn = true;
localStorage.setItem('user', JSON.stringify(res.user));
var user = res.user;
this.db
.collection('users')
.doc(user?.uid)
.set({
email: user?.email,
uid: user?.uid,
})
.catch((e) => console.log(e));
});
}
logout() {
this.auth.signOut();
localStorage.removeItem('user');
}
getUsers() {
return this.users;
}
}
您需要反转关系,首先从用户的可观察对象开始,然后将其映射到 valueChanges。
auth.user.pipe(
switchMap(user => {
if (!user) { return EMPTY; }
return this.db.collection<User>('users').doc(user.uid)).valueChanges()
})
)
请记住用户未登录的情况,就像我在此处所做的那样,除非您正在守卫路线。