我有一个帖子集合,多个作者可以在其中创建帖子。这些职位可以分为高级职位和普通职位两种。 付费帖子只能读为作者订阅者的用户。
以下是数据库结构
posts/
**randomid**
authorid : 1
ispremium : true
content : "some content"
**otherrandomid**
authorid : 2
ispremium : false
content : "some content"
users/
**useruid1**
name : 'somename'
authorSubscribedByMe
1 : true
**useruid2**
name : 'someothername'
authorsSubscribedByMe
2 : true
我需要两种查询
所有一般职位
ref = db.collection('posts').where('ispremium','==',false)
特定作者的所有高级帖子
ref = db.collection('posts').where('ispremium','==',true)
.where('authorid', '==', 1)
因此,我不确定如何为此创建安全规则。我们可以通过使用安全规则中的get来检查订阅,因此第二个简单。 但是我读到某个地方,firestore在进行查询之前先对查询进行评估,因此在这种情况下,它可能需要作者的过滤器,并且无法对所有常规帖子进行查询。请指导我实现目标。
我想要的一个可选功能是在指定时间内访问高级帖子。因此,在用户集合中,对于authoeSubscribedByMe字段,对于authorid,而不是boolean,我将保留一个时间戳,因此,如果从现在开始订阅一个月,则用户只能访问到那时。让我知道是否可行。