有没有办法在不返回未定义的情况下编写此函数
Is there a way to write this function without returning a undefined
我正在使用 angular fire 根据登录用户读取 firestore 上的数据。我检查用户对象是否已返回,并基于此我有一个命令来监听文档更改。
async getUsersCards() {
let _user: UserModel = await this.authService.GetUser();
if (_user) {
return this.angularFirestore
.collection<Card>('cards', (ref) =>
ref.where('owner', '==', _user?.uid)
)
.valueChanges();
} else {
}
}
因为我有一个 If 检查用户,函数的签名是 Promise | undefined> 我如何消除对 undefined 的需求(我在 else 块中做什么)?
我认为您可以将代码简化为 return 和 Observable<Board[]>
而无需 return 和 Promise
,如下所示:
// import { from, Observable } from 'rxjs';
// import { filter, mergeMap } from 'rxjs/operators';
getUsersCards(): Observable<Board[]> {
// If `this.authService.GetUser()` returns an Observable, then you can use it directly without `from` function.
// The `from` function is used to create an Observable from a Promise.
return from(this.authService.GetUser()).pipe(
filter((user) => !!user),
mergeMap((user) =>
this.angularFirestore
.collection<Card>('cards', (ref) =>
ref.where('owner', '==', user?.uid)
)
.valueChanges()
)
);
}
然后,在您的 component/service 中,您可以像下面这样使用它:
getUsersCards().subscribe((res: Board[]) => console.log(res));
我正在使用 angular fire 根据登录用户读取 firestore 上的数据。我检查用户对象是否已返回,并基于此我有一个命令来监听文档更改。
async getUsersCards() {
let _user: UserModel = await this.authService.GetUser();
if (_user) {
return this.angularFirestore
.collection<Card>('cards', (ref) =>
ref.where('owner', '==', _user?.uid)
)
.valueChanges();
} else {
}
}
因为我有一个 If 检查用户,函数的签名是 Promise
我认为您可以将代码简化为 return 和 Observable<Board[]>
而无需 return 和 Promise
,如下所示:
// import { from, Observable } from 'rxjs';
// import { filter, mergeMap } from 'rxjs/operators';
getUsersCards(): Observable<Board[]> {
// If `this.authService.GetUser()` returns an Observable, then you can use it directly without `from` function.
// The `from` function is used to create an Observable from a Promise.
return from(this.authService.GetUser()).pipe(
filter((user) => !!user),
mergeMap((user) =>
this.angularFirestore
.collection<Card>('cards', (ref) =>
ref.where('owner', '==', user?.uid)
)
.valueChanges()
)
);
}
然后,在您的 component/service 中,您可以像下面这样使用它:
getUsersCards().subscribe((res: Board[]) => console.log(res));