我正在尝试获取Firebase为我的新记录/文档生成的uid,如下所示:
我正在尝试获取文档,但由于我没有自己的ID,我无法达到它。此代码不会返回记录的uid,它只返回记录本身:
return this.afDB.collection('games');
另外,我不能使用我生成的id来查询它,如果我使用集合来查询它,它就不会让我更新或删除记录。
所以,这不起作用:
this.afDB.doc('games/' + game.id).delete();
有没有办法获得我想要的UID?
答案 0 :(得分: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映射到每个对象的属性,在这种情况下为$ key。然后在我尝试访问该对象时使用它。