AngularFire2 firestore在doc valueChanges上取(1)

maj*_*odi 3 firebase angularfire angular google-cloud-firestore

使用AngularFire2我尝试从单个Firestore文档中获取数据.有效的是:

this.addressRef = afs.doc<Address>('addresses/key')
this.addressRef.valueChanges().subscribe(val => {......}
Run Code Online (Sandbox Code Playgroud)

我想只运行一次订阅代码.通常我使用take(1)来实现这一点(与Firebase DB一起使用).但是这段代码:

this.addressRef.valueChanges().take(1).subscribe(val => {......}
Run Code Online (Sandbox Code Playgroud)

给出错误:TypeError:this.addressRef.valueChanges(...).take不是函数.

VS Code列出了采取行动.这是AngularFire2中的一个错误,我做错了还是有其他(更好的)方法在获取数据后停止订阅?我也尝试过topromise,但这也失败了.

Dau*_*eDK 10

您可以通过执行以下操作来实现此目的:

user$ = this.afDs.doc<User>('users/NaGjauNy3vYOzp759xsc')
  .valueChanges().pipe(
    take(1) // Here you can limit to only emit once, using the take operator
  )
Run Code Online (Sandbox Code Playgroud)

我已经为您提供了stackblitz:https://stackblitz.com/edit/angular-snnbwd

只需转到app/hello.component.ts即可查看代码.