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'});
});
}
我正在尝试获取我的 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'});
});
}