javascript - 如何将 key 添加到添加到 Angularfire 2 版本 5 中节点的对象

标签 javascript angular firebase firebase-realtime-database angularfire2

我曾经能够在 angularfire2 v.4.x 中将 key 添加到对象本身,如下所示:

addMatchToDb(match: any){
    let ref = this.db.object('matches/');
    let matchId = this.matches.push(match).key;
    let updates = {};
    updates['/matches/' + matchId + '/id'] = matchId;
    updates['/matches/' + matchId + '/matchCreated'] = firebase.database.ServerValue.TIMESTAMP;
    firebase.database().ref().update(updates);
  }

因为我收到错误

error TS2339: Property 'push' does not exist on type 'Observable'<'any'>'

,我考虑重构为:

addMatchToDb(match: any){
    let ref = this.db.object('matches/');
    let matchId = ref.update(match);
  }

但现在我无法将 key 添加为 ID 或时间戳。对于版本 5 的新变化有什么建议吗?

更新:有关 this.matches 的一些详细信息:

export class DatabaseService {
  matches:Observable<any>;
  weightClasses:Observable<any>;
  giRanks:Observable<any>;
  noGiRanks:Observable<any>;
  ageClasses:Observable<any>;
  users:Observable<any>;
  currentUser:Observable<any>;
  moves:Observable<any>;
  retrievedMatch:Observable<any>;

  constructor(private db: AngularFireDatabase, private textTransformationService: TextTransformationService) {
    this.matches = db.list<Match>('/matches').valueChanges();
    this.weightClasses = db.list<string>('/weightClasses').valueChanges();
    this.giRanks = db.list<string>('/giRanks').valueChanges();
    this.noGiRanks = db.list<string>('/noGiRanks').valueChanges();
    this.ageClasses = db.list<string>('/ageClasses').valueChanges();
    this.users = db.list<User>('/users').valueChanges();
    this.moves = db.list<string>('/moves').valueChanges(); //TODO maybe JSON?
  }

最佳答案

我不确定,但您的推送必须在 db.list<Match>('/matches') 上完成而不是db.list<Match>('/matches').valueChanges();

因此,您可以将类型 AngularFireList 添加到变量 db.list<Match>('/matches')并获取推送/更新/删除方法

关于javascript - 如何将 key 添加到添加到 Angularfire 2 版本 5 中节点的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51229269/

相关文章:

javascript - 如何调试我的 JavaScript 代码?

javascript - Angular2 和 Karma 仅运行一个测试套件,又称为“describe.only”

angular - 如何在 Angular 中将表单控件重置为原始状态?

ios - 如何在 iOS 上使用 Firebase 和 Flutter 获取推送通知?

python - 使用 python-firestore AsyncClient 和 firebase

javascript - css:在打印的 PDF 页面的 HTML 页脚中呈现页码(Chromium)

javascript - 如何将 ng-model 值捕获到可排序选项中 [ui-sortable]

javascript - 循环中的链式 promise : Firebase read works fine, Firebase 写入不

javascript - IE7 中非常奇怪的 JavaScript 错误

html - 将 PrimeNG 组件彼此相邻而不是彼此对齐