Я бы порекомендовал вам взглянуть на следующую документацию , где вы можете найти несколько примеров:
service cloud.firestore {
match /databases/{database}/documents {
match /Companies/{companyID}/Members/{memberID} {
// Only authenticated users can read
allow read: if request.auth != null;
}
}
}
Используя приведенные выше правила безопасности, любой аутентифицированный пользователь может получить членов любой отдельной компании :
db.collection("Companies/{companyID}/Members").get()
Теперь, если вы хотите, чтобы те же правила безопасности применялись к запросам группы сбора, вы должны использовать версию 2 :
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Authenticated users can query the posts collection group
// Applies to collection queries, collection group queries, and
// single document retrievals
match /{path=**}/Members/{memberID} {
allow read: if request.auth != null;
}
}
}
Любой аутентифицированный пользователь может получить члены любой отдельной компании :
Но что, если вы хотите показать определенному пользователю его членов во всех компаниях? Вы можете использовать запрос группы сбора для получения результатов из всех коллекций элементов:
var user = firebase.auth().currentUser;
db.collectionGroup("members").where("author", "==", user.uid).get()
Примечание. Для этого запроса требуется составной индекс для коллекции элементов. Если вы не включили этот индекс, запрос вернет ссылку с ошибкой, по которой вы можете перейти, чтобы создать требуемый индекс.