1
使用AngularFire2我尝试从单个Firestore文档获取数据。 什么工作是:使用AngularFire2我尝试从单个Firestore文档获取数据。(1)关于文档值更改
this.addressRef = afs.doc<Address>('addresses/key')
this.addressRef.valueChanges().subscribe(val => {......}
我想只运行一次申购代码。通常我使用take(1)来实现这一点(适用于Firebase DB)。 但这个代码:
this.addressRef.valueChanges().take(1).subscribe(val => {......}
给出错误:类型错误:this.addressRef.valueChanges(...)采取的是不是一个函数。
VS代码列出了采取行动。这是AngularFire2中的一个错误,我是这样做的错误还是有其他(更好)的方式来取消数据后停止订阅?我也尝试过,但也失败了。
好的,起初我没有在答案中看到很多新东西,因为我已经使用相同的代码,但take()在我的设置中不起作用。但在研究你的堆栈闪电之后,我发现我的进口是不同的。我想他们是由VC自动生成的。我有“rxjs/operator/take”作为导入路径。将它更改为“rxjs/add/operator/take”,如同您的示例,现在take()工作。所以谢谢你提供完整的代码。我会进一步研究这些不同的途径。 – majodi
现在每当你需要例如user.uid来编写其他代码时,你需要在订阅中这样做?这使代码看起来很奇怪并且嵌套。难道你不能从数据库中获得当前用户的uid,并且在你的组件中做了一些事情(不是html)吗? – Ruben
@Ruben你还需要帮助吗?简短的回答是肯定的 - 你必须订阅。但你不需要多次调用它:) – DauleDK