在 Angular 中拉取和订阅 firebase 数据

Posted

技术标签:

【中文标题】在 Angular 中拉取和订阅 firebase 数据【英文标题】:Pull and subscribe to firebase data in Angular 【发布时间】:2020-08-27 20:50:55 【问题描述】:

我有一个非常简单的任务。我想使用 Angular 从firestore 数据库集合中提取文档。由于此操作可能需要几秒钟才能完成,所以我遇到了一个问题,我需要等待该数据或订阅它。

令我感到困惑的是,在某处的某种文档中没有对此进行清晰、简洁和简单的解释。我现在已经花了几个小时,找到了多种解释 - 没有一个有效。

以下将用于提取数据。但是问题是在数据返回之前就已经写好了。

组件调用服务

this.userInfo = this.UserService.getUserInfo( this.userData.uid )

服务电话

getUserInfo( userId ) 
    var docRef = this.afs.collection('users').doc(userId);
    docRef.ref.get().then(function(doc) return doc.data());

您不会在我所见过的任何地方找到解释的 .ref。正如我所说,这些数据被传递给子组件,延迟意味着数据没有传递给组件。我尝试订阅它,但无法让它工作。

我只是想解释一下它应该如何完成,而不是破解。

【问题讨论】:

【参考方案1】:

据我了解,通过查看代码,它返回一个Promise,所以你需要使用它异步的方式

Service.ts

getUserInfo( userId ) 
    var docRef = this.afs.collection('users').doc(userId);
    return docRef.ref.get()

component.ts

this.UserService.getUserInfo( this.userData.uid ).then(response=> 
   this.userInfo = response.data(); 
)

试试这个,让我知道

【讨论】:

@JoshuaFoxworth:也请随意投票。即将触及 10k :D

以上是关于在 Angular 中拉取和订阅 firebase 数据的主要内容,如果未能解决你的问题,请参考以下文章

sourcetree 每次拉取和推送都要输入密码

sourcetree 每次拉取和推送都要输入密码

在 ViewController 的 UICollectionView 中拉取刷新

在 BigQueryOperator 中拉取 xcom

设置 git 拉取和推送所有分支

使用 Atlassian Sourcetree,是不是可以在执行拉取之前查看将从远程存储库中拉取哪些更改?