我具有以下Firestore结构:
case (col)
----someFirestoreId (doc | Do I need a specific ID?)
-------------------name (field)
-------------------id (field)
-------------------modules (col)
--------------------------0 (doc)
--------------------------1 (doc)
--------------------------2 (doc)
----someFirestoreId (doc | Do I need a specific ID?)
-------------------name (field)
-------------------id (field)
-------------------modules (col)
--------------------------0 (doc)
--------------------------1 (doc)
(0 & 1 each have its own fields)
如何检索此数据?
优选地,我想要一个数组,该数组包含每个案例及其子集合modules
及其文档,但是由于我认为这是不可能的-是否有一种特殊的方法来检索此类数据?
最后,我需要能够通过遍历模块的文档0, 1, 2...
修改:
到目前为止,这就是我所得到的:
this.db.collection('test').valueChanges()
.subscribe(val => {
this.casesService.cases = val;
this.casesService.animate = true;
for (let i = 0; i < val.length; i++) {
this.db.collection('test').doc(val[i].name).collection('modules').valueChanges()
.subscribe(value => {
console.log(value);
this.casesService.case = value;
resolve(true);
});
}
});
这一遍遍所有情况,获取模块并将其保存在caseService
中。这样,我就得到了一个数组case
及其文档0, 1, 2...
但是在有多个条目的情况下,case
将被每个新的大小写覆盖。另外,case
项不会分配给cases
条目内的任何情况。
所有cases
/条目都显示在投资组合中-单击案例后,我将得到如下数据:
this.route.paramMap.pipe(
map(paramMap => +paramMap.get('id')),
switchMap((id: number) => this.caseService.getCase(id)),
).subscribe(cases => { this.case = cases;
});
那是我需要分配的模块0, 1, 2...
的地方
此外,此方法要求案例收集名称是普通名称,这也可能是一个缺点。