Однако, когда я вхожу в систему как пользователь типа администратора, я хотел бы видеть данные для всех пользователей, поэтому я пытаюсь создать и запросить, который по сути будет рассматривать все документы в коллекции людей.
Как я могу это сделать?
К сожалению, вы не можете использовать эту схему базы данных.Запросы в Firestore являются мелкими, что означает, что они получают только элементы из коллекции, для которой выполняется запрос.Невозможно получить документы из коллекции верхнего уровня и других коллекций или вложенных коллекций в одном запросе.Firestore не поддерживает запросы к различным коллекциям за один раз.Один запрос может использовать свойства документов только в одной коллекции.Поэтому самое простое решение, о котором я могу подумать, - это добавить еще одну коллекцию, в которую вы должны добавить все «документы» во всех подколлекциях, которые существуют во всех people collection -> uid -> generatedId
.Таким образом, ваша схема может выглядеть примерно так:
Firestore-root
|
--- allDocuments (collection)
|
--- generatedId1 (document) //The unique id of the document
| |
| --- name: 'Speech1'
| |
| --- type: 'admin'
| |
| --- uid: 'UserId1'
|
--- generatedId 2(document) //The unique id of the document
|
--- name: 'Client1'
|
--- type: 'client'
|
--- uid: 'UserId2'
Чтобы отобразить всех этих пользователей, просто присоедините прослушиватель к ссылке allDocuments
и получите все users
объекты.Если вы хотите получить всех пользователей с правами администратора, просто используйте Query
, который выглядит следующим образом:
var allDocumentsRef = db.collection("allDocuments");
var query = allDocumentsRef.where("type", "==", "admin");