此问题在此处已有答案:
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相关的集合?
1条答案
按热度按时间7cwmlq891#
否,不可能筛选集合组查询以仅包括某些子集合。查询将始终考虑所有同名子集合中的所有文档。
如果您已经知道用户ID,那么您实际上根本不需要集合组查询。您可能只想使用路径中的用户ID直接查询特定的子集合。
但是,如果确实要筛选集合组查询,则只能使用这些子集合中文档的字段。因此,您可以将用户ID作为字段添加到每个子集合的每个文档中,并使用该字段来筛选集合组查询。您可以使用IN查询一次查找最多10个用户ID的子集合文档。