firebase 我可以只使用collectionGroup [duplicate]获取特定用户的子集合吗

uhry853o  于 2022-12-04  发布在  其他
关注(0)|答案(1)|浏览(85)

此问题在此处已有答案

How to perform collection group query using document ID in Cloud Firestore(1个答案)
23小时前关门了。
使用firebase firestore我可以使用collectiongroup来获得子集合只为特定的父集合吗?(像只为特定的用户与uid)

const patientsCollectionAllQuery = query(collectionGroup(db,'patients'))
getPatientsSnapshot = onSnapshot(patientsCollectionAllQuery, async (querySnapshot) => {
  const patients = []
  querySnapshot.forEach((doc) => {
    let patient = {
      id: doc.id,
      details: doc.data().details,
      date: doc.data().date,
      namef: doc.data().namef,
      age: doc.data().age,
      gender: doc.data().gender,
      phone: doc.data().phone
    }
    patients.push(patient)
  })

}, error => {
  console.log('error', error.message)
})

那么,我是否可以仅针对用户/{用户ID}/患者下的特定用户ID获取此collectiongroup查询?另一个问题是,如果我将用户ID字段添加到患者内的每个对象,如何设置firebase规则以防止任何未经许可的用户访问与特定用户ID相关的集合?

7cwmlq89

7cwmlq891#

否,不可能筛选集合组查询以仅包括某些子集合。查询将始终考虑所有同名子集合中的所有文档。
如果您已经知道用户ID,那么您实际上根本不需要集合组查询。您可能只想使用路径中的用户ID直接查询特定的子集合。
但是,如果确实要筛选集合组查询,则只能使用这些子集合中文档的字段。因此,您可以将用户ID作为字段添加到每个子集合的每个文档中,并使用该字段来筛选集合组查询。您可以使用IN查询一次查找最多10个用户ID的子集合文档。

相关问题