基于订阅的Firestore规则,用于访问集合中的某些文档

时间:2019-02-17 12:36:40

标签: javascript firebase google-cloud-firestore firebase-security-rules

我有一个帖子集合,多个作者可以在其中创建帖子。这些职位可以分为高级职位和普通职位两种。 付费帖子只能读为作者订阅者的用户。

以下是数据库结构

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  

我需要两种查询

  1. 所有一般职位

    ref = db.collection('posts').where('ispremium','==',false)
    
  2. 特定作者的所有高级帖子

    ref = db.collection('posts').where('ispremium','==',true)
                                .where('authorid', '==', 1)
    

因此,我不确定如何为此创建安全规则。我们可以通过使用安全规则中的get来检查订阅,因此第二个简单。 但是我读到某个地方,firestore在进行查询之前先对查询进行评估,因此在这种情况下,它可能需要作者的过滤器,并且无法对所有常规帖子进行查询。请指导我实现目标。

我想要的一个可选功能是在指定时间内访问高级帖子。因此,在用户集合中,对于authoeSubscribedByMe字段,对于authorid,而不是boolean,我将保留一个时间戳,因此,如果从现在开始订阅一个月,则用户只能访问到那时。让我知道是否可行。

0 个答案:

没有答案