代码之家  ›  专栏  ›  技术社区  ›  Atticus29

如何向AngularFire 2版本5中添加到节点的对象添加键

  •  0
  • Atticus29  · 技术社区  · 6 年前

    我以前可以在AngularFire2 v.4.x中向对象本身添加键,如下所示:

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

    因为我出错了

    错误TS2339:类型“observable”上不存在属性“push”<“any”>。

    ,我考虑重构到:

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

    但是现在我无法将密钥添加为ID或时间戳。对版本5的新更改有什么建议吗?

    更新:有关此的一些详细信息。匹配:

    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?
      }
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Wandrille    6 年前

    db.list<Match>('/matches') db.list<Match>('/matches').valueChanges();