因此,我一直在搜索很多东西,但对此一无所获。收集发表评论的集合,该集合仅可由已登录用户读取。
我如何为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
也不工作。
和hasOnly,仍然没有。我认为发生的是,仅在[[listing个文档中,request.resource.data实际上并不存在。我知道您可以检查allow list: if isLoggedIn() && request.query.limit <= 10 && request.resource.data.postId == resouce.data.postId
仍然没有。尝试过hasAll
query.orderBy
,但这对我而言没有帮助。请告知因此,我一直在搜索很多东西,但对此一无所获。收集帖子评论,只有登录用户才能阅读。如何为列表编写安全规则...
request.resource.data.keys().hasAny(['postId'])
的操作。请注意,API文档中提到request.resource: