2017-10-18 47 views
0

我試圖讓火力地堡爲我的新記錄/文件的UID,這裏顯示的:AngularFire2 - 獲取由Firebase生成的節點UID?

enter image description here

我試圖得到一個文件,但因爲我沒有它身份證,我無法達到它。此代碼將不會返回的記錄的UID,它只返回記錄本身:

return this.afDB.collection('games'); 

而且,我不能用我生成查詢它的ID,如果我用一個集合,以便能夠進行查詢,它只是不會讓我更新或刪除記錄。

所以,這不起作用:

this.afDB.doc('games/' + game.id).delete(); 

有沒有一種方法來獲取UID我在找什麼?

回答

0

我已經解決了它,這是我的服務代碼:

import { Injectable } from '@angular/core'; 
import {AngularFirestore, AngularFirestoreCollection} from 'angularfire2/firestore'; 
import {Observable} from 'rxjs/Observable'; 

@Injectable() 
export class GamesFirebaseService { 
    private itemsCollection: AngularFirestoreCollection<any>; 
    items: Observable<any[]>; 
    countItems = 0; 
    constructor(public afs: AngularFirestore) { 
     this.itemsCollection = this.afs.collection<any>('games'); 
     this.items = this.itemsCollection.snapshotChanges() 
      .map(actions => { 
       this.countItems = actions.length; 
       return actions.map(action => ({ $key: action.payload.doc.id, ...action.payload.doc.data() })); 
      }); 
    } 
    public store = (game) => { 
     return this.itemsCollection.add(game); 
    } 
    public update(game) { 
     return this.itemsCollection.doc(game.$key).update(game); 
    } 
} 

基本上我不得不action.payload.doc.id映射到在這種情況下每個對象的屬性,$關鍵。然後當我嘗試訪問該對象時使用它。