Firebase 在 collection 内获取文档长度

Firebase get document length inside collection

我正在尝试获取我的 collection 有多少文档,以便在添加文档时设置下一个 ID。

我正在使用 angularfire 连接到 firebase。 我有一项服务可以从 firebase

获取价值

asignaturas.service.ts

addAsignatura() {
      return this.db.collection('asignaturas').valueChanges();
   }

asignaturas.component.ts

 onSend(){
    this.dbService.addAsignatura()
    .subscribe(data => {
      return this.size = data.length;
      
      
    });
    this.size = this.size + 1;
      this.docID = this.size.toString();
    this.dbService.getCollectionAsignaturas().doc(this.docID)
      .set({codigo: 12, nombre: 'xcssdf'});
   
  }

我在 html 中有一个按钮可以将此信息发送到 firebase,所以我尝试订阅可观察对象并计算长度,我的问题是当我第一次点击该按钮时,没有任何反应,计数变量没有更新,当我第二次点击时一切正常

由于您是在 'addAsignatura' 中进行异步调用,因此 'this.size' 的值在我们获得该调用的结果之前不会更新。程序执行同时向前移动并执行其他语句。

为了实现所需的行为,将剩余的代码放在回调函数中,如下所示:

    onSend(){
       this.dbService.addAsignatura()
        .subscribe(data => {
            this.size = data.length;
            this.size = this.size + 1;
            this.docID = this.size.toString();
            this.dbService.getCollectionAsignaturas().doc(this.docID)
             .set({codigo: 12, nombre: 'xcssdf'});
  
       }); 
    }