在我的Firestore中,我使用子集合中的子集合来形成一个大型的“树状”数据结构。每个用户都是这棵树中的一个点,不管他是树根(起点)、树叶(末端的某个地方),还是中间的某个地方。
match /users/{userDocument=**} {
allow read, write: if resource.data.userid == request.auth.uid;
// Not actual code but something like this where now under my user document, i can read all other users under me in tree
if resource.data.userid == request.auth.uid {
match /{furtherDepthUserDocuments=**} {
allow read: if true;
}
}
}
编辑:示例。)一个这样的示例可以是具有以下内容的类似学校的系统:
teachers/
{teachDocid1}/
undergrads/
{undergradDocid1}/
phdAssignments/
{docid}..
tutors/
{tutorsDocid1}/
tutorAssignments/
{docid}..
{teachDocid2}/
graduates/
{graduatesDocid1}/
classHomeworks/
{docid}..
{teachDocid3}/
preschoolers/
{preschoolersDocid1}/
studentProjects/
{docid}.
如果这看起来过于复杂,我很抱歉,但是如果教师登录(例如,如果该教师对应于{teachDocid1}
),他们将能够查看他们的underges
、phdassignments
、tutors
和tutorassignments
。现在,如果根{teachDocid1}
下的本科生登录,他们将只能查看phdassignments
。
此树中的每个文档都有一个userid
字段,该字段也引用了此文档关联的用户。我可以很容易地找到相应的文档/路径与一个usersid,但有没有任何递归的方法,然后允许读取在安全性下的所有指定的文档?
另外,在node.js中是否有查询这些文档的特定方法?
使用uid作为文档id和筛选器构造集合结构,请尝试以下操作,例如:
match /users/{userDocument=**} {
allow read, write: if resource.data.userid == request.auth.uid;
match /uid/{document=**} {
allow read: if request.auth.uid == uid;
}
}
这是未经测试的
在我的集合的SnapshotListener中,我使用以下命令循环遍历文档: 在 for 循环中的每个文档中,让我们称之为 ,我在 Cloud Firestore 上还有另一个文档集合。我想检索内子集合中的所有文档(每个文档只有一个字符串字段)。我能够做一个来获取本身,我用它来获取字符串字段,但我不知道如何获取其子集合中的文档。
假设我有一个集合,其中包含子集合。餐厅权限设置在餐厅文档中,如下所示: 餐馆 任何有权访问餐厅的人也可以访问它的任何子集合,包括子集合。这是安全规则: 安全规则 查询餐厅列表可以这样完成,而且效果很好: 查询餐厅 现在如何查询子集合?我知道Firestore需要根据查询推断权限,而不查看底层数据。从逻辑上讲,这应该是可能的,因为任何可以访问的人也可以访问子集合。但是我如何组合这个子集合查询,以便F
为了查询子集合和父文档,我对firest的文档及其最佳实践有一些问题。我试图使用Typecript在我的Firebase函数中进行查询。 DB: ├── 用户(集合) │ └── 用户(ID为的文档) │ │ └── 计划(子集合) 我有一个数组中的用户ID列表,我需要从用户文档和当前文档的子集合计划中收集信息。 但是如何从用户文档和子集合(计划)文档(当前)中获取数据,我不知道在场景中最有效的查
我有文档,其中包含子集合。现在,我想获取子集合中至少有一项的所有项目。这可能吗? 类似于: < code>getDocs(collection(getDB()," Projects)),其中(" Items.size ","
我的FiRecovery数据库中有一个名为Reports的集合,我已经在其中添加了文档。但我现在的问题是我想在报表中添加一个带有子集合的文档,有什么想法吗?
Firestore如果我读取了一个集合,该集合包含100个文档,那么firebase是将其计算为100个读取操作还是1个读取操作? 如果我的1个文档包含另外2个集合,每个子集合包含10个文档,那么在这种情况下,总读取计数是多少?如果它单独计算子集合和it文档,那么Firestore的定价非常高