2016-08-03 57 views
0

數據庫中用戶:火力地堡充分利用數據庫視圖

用戶能夠添加後,看起來有點像:

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); 
      }) 
     } 
    ) 
    } 

(組件)在這裏,我只是assaign所有這些職位的職位陣列打印內部視圖。

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
{{(homepageService.getUser(post.author) | async)?.email}} 

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

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

在這種情況下,我的網頁崩潰。帖子不顯示,我什麼也做不了,不能點擊。全部被凍結。 (在控制檯中沒有錯誤)。當我閱讀'''這是預期的行爲,因爲每次調用該方法時,都會返回一個新的promise實例,當它解析後觸發更改檢測,這會檢索新的promise,從而觸發更改檢測。 ..''' – elzoy

+0

如果您直接返回從數據庫調用中獲得的可觀察值,該怎麼辦? (看我更新的答案) –

+0

是的,我只是做了同樣的工作。謝謝。 – elzoy