在Firestore中检索多个项目

时间:2019-01-23 01:04:39

标签: angular firebase google-cloud-firestore

我在Firestore中具有以下数据结构:

{
  items: [
    itemId1: {},
    itemId2: {},
    itemId3: {}
  ],
  users: [
    userId1: {
      itemIds: [
        "itemId1",
        "itemId3"
      ]
    }
  ]
}

此数据结构的目标是使许多用户可以访问相同项目并进行协作。因此,将项目转移到每个用户中将非常低效且困难。

如果我有userId(userId1,我想查询项目集合中用户itemIds数组中的所有项目。

因此,在此示例中,它将返回[itemId1: {}, itemId3: {}]

我的应用程序是使用Angular(7.2.1)和Angularfire的应用程序。

如果我的数据结构固有存在缺陷,请告诉我,我可以尝试更改它们。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

this.afs.doc('users/' + userId1).valueChanges().subscribe(itemIds=>{
  itemIds.forEach(itemId=>{
    this.afs.doc<Item>('items/'+ itemId).valueChanges().subscribe(item=> {
      console.log(item);
    });
  })
});

您可以尝试这个。 第一个 afs.doc users 集合中检索itemId数组 forEach 遍历所有 itemIds ,并对文档ID为_itemId

items 集合进行另一个Firestore查询
  

我没有运行代码。但它应该清除有关如何查询此类结构的想法。希望能回答您的问题