【问题标题】:Observable on angular firestore document not working可在 Angular Firestore 文档上观察到不起作用
【发布时间】:2019-06-25 12:41:12
【问题描述】:

我正在尝试将 firestore 文档的 observable 分配给服务的属性。我想稍后将它与模板中的异步管道一起使用

我尝试了各种方法,但无法正常工作。一些帮助真的很棒。

export class UserService {
    private currentUserObservable: Observable<User>;

    loadUserObservable(uid){ 
    this.currentUserObservable =this.afs.doc(`users/${uid}`).valueChanges()
    }
}

<div *ngIf="userService.currentUserObservable | async as user">
Displayname: {{ user.displayName }}
</div>

【问题讨论】:

  • 我认为 valueChanges 应该已经返回一个 observable。你能创建一个复制品吗? stackblitz 是在这里共享代码的好方法。
  • 对不起,代码中缺少一块(这是我第一次来这里)...
  • 创建一个Service并在那里获取数据,(这里是如何做一个服务angular.io/tutorial/toh-4),返回数据组件并订阅,然后它就会有数据

标签: javascript angular firebase google-cloud-firestore angularfire2


【解决方案1】:

这里有一个登录库的示例,其中包含数据库中的同步用户,如果您愿意,可以研究它。

认证模块:
https://bitbucket.org/mises543/fire-ngx-auth/src/master/projects/auth/src/lib/

使用此模块的示例应用:
https://bitbucket.org/mises543/fire-ngx-auth/src/master/projects/auth-test/

npm:
https://www.npmjs.com/package/@fire-ngx/auth

【讨论】:

  • 谢谢,这正是我想要的。问题确实是 observable 丢失了 - 在您的代码中通过以下方式解决: this.user$ = this.afAuth.authState.pipe( switchMap(user => { if (user) { if (this.config.enableFirestoreSync) { this.syncService.updateUserData(user) return this.syncService.getUserData(user.uid) } else { return of(user) } } else { return of(null) } })
  • 没问题,我以后会尝试在 NPM 上发布这个库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-17
相关资源
最近更新 更多