检索Firestore子集合

时间:2019-07-23 19:16:08

标签: angular typescript firebase google-cloud-firestore

我具有以下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...

,从参数路由中获取案例ID并显示分配的模块。

修改:
到目前为止,这就是我所得到的:

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...的地方

此外,此方法要求案例收集名称是普通名称,这也可能是一个缺点。

0 个答案:

没有答案