【问题标题】:How i get all subcollection in document in collection我如何在集合中的文档中获取所有子集合
【发布时间】:2021-06-29 00:08:13
【问题描述】:

我正在寻找文件谈论这个我的问题,但看起来相当多

我有一个这样的收藏 collection(user1)=>uid=>document( collection(Product => uid),nameUser....bla bla)

我得到了所有产品的文档 user1,这很容易,但是我如何用用户 2、用户 3 得到这个并收集到所有用户的数组产品中?

我在下面尝试过这段代码,但它不明白

getData = async () => {
    const a = [];
    await firebase.firestore().collection('user').doc().collection('Product').onSnapshot(sanpham => {

      sanpham.forEach((doc) => {
        a.push({ id: doc.id, data: doc.data() })
      })
    })
    this.setState({ data: a });
  }

【问题讨论】:

  • 我回答了这个exact same problem here 你可以在那里使用答案,它的工作原理几乎相同
  • 没有阅读,但它没有解决我的问题,我期待一个简洁的非嵌套查询解决方案或 collectionGroup 更好
  • 我正在查询文档中的所有子集合,而不是集合中的所有文档
  • 我建议的解决方案是获取所有用户(使用我的答案中显示的方式),然后您可以从中获取每个用户的产品并收集到一个对象或数组中

标签: javascript firebase react-native google-cloud-firestore


【解决方案1】:

如果您想从所有Product 集合中获取文档,可以使用collection group query

要使用它,你应该这样做:

await firebase.firestore().collectionGroup('Product').onSnapshot(sanpham => {
  sanpham.forEach((doc) => {
    a.push({ id: doc.id, data: doc.data() })
  })
})

如果您想知道产品属于哪个user,您可以通过以下方式确定:

const productRef = doc.ref;
const productCollectionRef = productRef.parent;
const userRef = productCollectionRef.parent;
console.log(userRef.id); 

【讨论】:

  • 哦收藏不需要查询'Where'???我认为 collectionGroup 和 Where 总是在一起
  • 你下面的代码我试过了,但是和我试过的其他时间很相似,我不知道怎么用吗?
  • 我在我的问题上添加了它,它看起来很麻烦,我不能使用它,尤其是 ProdiverData
  • 抱歉,我不确定您现在遇到了什么问题,以及它与我理解的关于一次从所有子集合加载文档的原始问题有何关系。我想我已经在上面解决了这个问题,所以如果你之后有新问题,我建议将其作为一个新问题发布,并附上自己的 MCVE
猜你喜欢
  • 1970-01-01
  • 2018-04-03
  • 1970-01-01
  • 2021-03-30
  • 2018-07-01
  • 2021-10-30
  • 2023-03-28
相关资源
最近更新 更多