2017-10-13 39 views
1

我想在Angular 4應用中使用Angularfire2。我可以使用AngularFirestoreCollection從我的firestore中獲取對象的集合。但是,當我遍歷集合中的文檔時,我注意到文檔不包含文檔關鍵字。所以,我不認爲我有什麼辦法來做這樣的事情,比如從用戶界面的列表中刪除一個文檔,因爲我不知道與文檔關聯的關鍵。這裏是我的代碼:Angularfire2 AngularFirestoreCollection不發送密鑰與集合中的每個對象

export class CategoryComponent implements OnInit { 
     private categoryCollection: AngularFirestoreCollection<any>; 
     public categories: Observable<any[]>; 
     public category: Category; 

     constructor(public db: AngularFirestore, private router: Router) { 
      this.categoryCollection = db.collection<any>('categories'); 
      this.categories = this.categoryCollection.valueChanges(); 
      this.category = new Category(); 
     } 
} 

該代碼得到我的集合,看起來像這樣:

{name: 'Some name'} 

我哪裏會想到更多的東西一樣:

{key: 'theKey', name: 'Some name'} 

我一直在看在github上的文檔,但我要麼是盲人,要麼是文檔沒有顯示我做錯了什麼。也許我對於Firebase如何將文檔發回到集合中一無所知?

回答

3

.valueChanges()方法只會給你數據。如果你需要的關鍵,以及你可以使用.snapshotChanges()

.map((actions: any) => { 
    return actions.map(action => { 
     const data = action.payload.doc.data(); 
     const key = action.payload.doc.id; 
     return {key, ...data}; 
    }); 
    }); 

爲了添加文檔鍵以及
在你的情況下可能是這樣

this.categories = this.categoryCollection.snapshotChanges().map((actions: any) => { 
    return actions.map(action => { 
    const data = action.payload.doc.data(); 
    const key = action.payload.doc.id; 
    return {key, ...data}; 
    }); 
}); 

認爲這應該給你所需的數據

+0

這樣做。我知道這將會是那樣的小事。謝謝您的幫助。 – spetz83