Firestore - 深度查询

时间:2018-01-03 20:42:08

标签: javascript angular google-cloud-firestore

我有一个包含集合(Items)的Firestore,其中包含子集合(称为“东西”)。当我获得我的It​​ems集合时,我获得了所有子文档,但没有获得子集合。我想做一个深度检索,一个名为Items的对象包含子集合。

我知道这不可能开箱即用,但我很难自己编写代码来执行此操作。

有人可以帮忙吗?

constructor(public afs: AngularFirestore) {
//this.items = this.afs.collection('Items').valueChanges();
this.itemsCollection = this.afs.collection('Items', ref => ref.orderBy('year', 'asc'));

this.items = this.itemsCollection.snapshotChanges().map(changes => {
  return changes.map(a => {
    const data = a.payload.doc.data() as Item;
    data.id = a.payload.doc.id;
    return data;
  });
});
}

getItems() {
 return this.items;
}

1 个答案:

答案 0 :(得分:0)

是的,您可以执行以下代码来获得您想要的内容。基本上这个代码为每个项目获取它的东西子集合:

xmm

getItems 方法将返回一个promisse,其中包含您的项目及其子集合。

类似的东西:

enter image description here

请记住,此查询可能会成为一个运行缓慢的查询,因为它正在为items集合的每个文档进行get。 因此,你可能应该考虑对数据库进行非规范化或者在项目文档的数组中转换事物子列表(在这种情况下,你应该知道文档的最大大小为1MB,所以如果你的数组可以变成这个选项就不要考虑太大了。