0

データベース: 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: 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ますが、非同期パイプも使用してみました。今、私は立ち往生しています。どうすればいいですか?

4

1 に答える 1

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

また

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

  getUser(key): Observable<any> {
    return this.af.database.object('/users/' + key);
  }
于 2016-08-03T11:34:18.463 に答える