У меня есть модель данных на основе ролей в Firestore согласно предложению googles: https://firebase.google.com/docs/firestore/solutions/role-based-access
Правила безопасности установлены правильно и работают нормально.Но теперь у меня проблема с тем, как запросить роли.
Это моя модель данных (один образец документа):
id: "1234-5678-91234",
roles:
userId_1:"owner",
userId_2:"editor
title: "This is a sample document"
И этоmy Firestore Query во Flutter, который получает все документы для конкретного пользователя по его идентификатору, если пользователь назначил роль "владелец" для документа:
return firestore
.collection(path)
.where("roles.${user.firebaseUserId}", isEqualTo: "owner")
.snapshots().map((snapshot) {
return snapshot.documents.map((catalog) {
return SomeDocumentObject(...);
}).toList();
});
Моя проблема сейчас в том, что мне нужно какое-то предложение "ИЛИ", которого, насколько я знаю, не существует. Приведенный выше запрос извлекает документы только для пользователей с ролью "владелец" , ноМне нужен запрос, который также извлекает документ, если userId связан с ролью «редактор».
Я пробовал «arrayContains:», что также, похоже, не работает (потому что этоs map).
Я читал о решениях с двумя независимыми запросами, которые из-за большого количества накладных расходов не кажутся хорошим решением.
Возможно, у кого-то из вас есть подсказка длямне?:)
Спасибо и всего наилучшего, Майкл