从数据库内部获取用户视图

时间:2016-08-03 11:22:46

标签: angular firebase firebase-realtime-database angularfire2

数据库:Firebase

用户可以添加一个看起来有点像的帖子:

postKey
  content: 'Content of the post',
  date: 'Date of post',
  author: 'authorKey' (author key is a login)

我认为我不应该将所有用户信息存储在author中,因为用户有一天会在他的个人资料中更改某些内容。我只在author内存储用户密钥,我希望在视图中打印发布数据时获得该用户。

(服务) 这就是我收到所有帖子(正常工作)的方式

  getPosts(): Promise<any> {
    return new Promise(
      (resolve) => {
        this.af.database.list('/posts')
          .subscribe(response => {
            if(response.length > 0) resolve(response);
          })
      }
    )
  }

(组件)在这里,我只是将所有这些帖子分配给posts数组,以便在视图中打印它。

  posts: any;

  constructor(private homepageService: HomepageService) {
    homepageService.getPosts().then(
      response => {
        this.posts = response.reverse();
      });
  }

(查看)除了我可以轻松打印的所有帖子数据外,我想通过post.author获取用户打印作者数据,如照片,名字,姓氏等。

<div *ngFor="let post of posts" class="post-body">
    {{post.content}}
    {{homepageService.getUser(post.author)?.email}}
</div>

通过这种方式,我想得到用户。这是getUser函数

  getUser(key): Promise<any> {
    return new Promise(
      (resolve) => {
        this.af.database.object('/users/' + key)
          .subscribe(response => {
            resolve(response);
          })
      }
    );
  }

我知道该行{错误{{homepageService.getUser(post.author)?.email}}内部没有then,但我也尝试过使用异步管道。现在我处于停滞状态。我该怎么做?

1 个答案:

答案 0 :(得分:1)

{{(homepageService.getUser(post.author) | async)?.email}}

{{(homepageService.getUser(post.author) | async).email}}

  getUser(key): Observable<any> {
    return this.af.database.object('/users/' + key);
  }