У меня есть коллекция постов, где несколько авторов создают посты.Эти посты могут быть двух типов: премиум и общие.Премиум-сообщения могут быть прочитаны только пользователем, подписчиком автора.
Ниже приводится структура базы данных
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 оценивает запрос перед его выполнением, поэтому в этом случае ему может понадобиться фильтр для автора, и он не может выполнить запрос для всех общих сообщений.Пожалуйста, помогите мне в достижении цели.
Также дополнительная функция, которую я хотел бы, - это доступ к премиум-сообщениям в течение определенного времени.поэтому в коллекции пользователей, для поля authoeSubscribeedByMe, для authorid вместо логического значения я буду хранить временную метку, поэтому, если подписка рассчитана на один месяц, пользователь может получить доступ только до этого времени.Дайте мне знать, если это возможно.