如果提供了特定字段,则为Firestore允许列表

问题描述 投票:0回答:1

因此,我一直在搜索很多东西,但对此一无所获。收集发表评论的集合,该集合仅可由已登录用户读取。

我如何为list操作编写安全规则,以便仅在尝试获取特定帖子的评论时才允许列出。查询非常简单,如下所示:

let query = store.comments
    .where( 'postId', '==', postId )
    .orderBy( 'createdAt', 'desc' )
    .limit(10)
    .get()

我担心人们只是在提取注释时会想到没有特定的postId。因此,我将查询的文档数量限制为max。每个请求10个]],以及需要登录,但是,为了尝试仅在postId存在时才允许列出,我尝试了许多这样的变体,但都没有用。

match /comments/{key} {
  allow list: if isLoggedIn() && request.query.limit <= 10 && request.resource.data.keys().hasAny(['postId'])
}

不起作用。

allow list: if isLoggedIn() && request.query.limit <= 10 && request.resource.data.postId is string

也不工作。

allow list: if isLoggedIn() && request.query.limit <= 10 && request.resource.data.postId == resouce.data.postId

仍然没有。尝试过hasAll

hasOnly,仍然没有。我认为发生的是,仅在[[listing个文档中,request.resource.data实际上并不存在。我知道您可以检查

query.orderBy

,但这对我而言没有帮助。
请告知

因此,我一直在搜索很多东西,但对此一无所获。收集帖子评论,只有登录用户才能阅读。如何为列表编写安全规则...

firebase google-cloud-firestore firebase-security-rules
1个回答
0
投票
当前不支持您对request.resource.data.keys().hasAny(['postId'])的操作。请注意,API文档中提到request.resource
© www.soinside.com 2019 - 2024. All rights reserved.