보기

2016-08-03 5 views
0

데이터베이스 내부 데이터베이스에서 사용자 가져 오기 : 중포 기지를보기

사용자가 보이는 게시물을 추가 할 수있는 비트 같은 : 내가 author 내에서 모든 사용자 정보를 저장하지한다고 생각

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

사용자가 언젠가 그의 프로필에서 무언가를 바꿀 것이기 때문입니다. author 안에 그냥 사용자 키를 저장하고 그 안에 포스트 데이터를 인쇄하는 동안 그 사용자를 얻고 싶습니다. 나는 모든 게시물을 받고 있어요 방식이 (제대로 작동)의

(서비스)

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

(구성 요소) 여기에 그냥보기 내부를 인쇄 할 배열을 게시하는 모든 게시물을 assaign.

posts: any; 

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

나는 아주 쉽게 인쇄 할 수있는 모든 POST 데이터를 제외하고 (보기), I는 등의 사진, 이름, 성,

같은 저자의 데이터를 인쇄 post.author하여 사용자를 좀하고 싶습니다
<div *ngFor="let post of posts" class="post-body"> 
    {{post.content}} 
    {{homepageService.getUser(post.author)?.email}} 
</div> 

이렇게하면 사용자를 얻고 싶습니다. 여기에 내가 그 라인이보기 내부에 then 없지만 내가 비동기 파이프를 사용하여도 시도했다고 잘못 {{homepageService.getUser(post.author)?.email}} 알고 인 getUser 기능

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

입니다. 이제 나는 정지했다. 어떻게해야합니까?

답변

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

또는이 경우 내 페이지 충돌에서

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

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

. 게시물이 표시되지 않으며 아무 것도 할 수 없으며 클릭 할 수 없습니다. 모두 얼어 붙었다. (콘솔에서 오류 없음). "''이 메소드는 메소드가 호출 될 때마다 약속이 변경 될 때 새로운 약속을 검색하는 변경 감지를 트리거하는 약속의 새 인스턴스를 반환하기 때문에 예상되는 동작입니다. ..'' – elzoy

+0

데이터베이스 호출에서 얻은 관측 값을 직접 반환하면 어떨까요? (내 업데이트 된 답변 참조) –

+0

그래, 난 그냥 똑같이하고 작동합니다. 고맙습니다. – elzoy