Первый вопрос, который у меня есть: вы передаете в функцию параметр 'schoolName', затем делаете this.db.collection(schoolName)
. Теперь, действительно ли название школы является названием коллекции, или это идентификатор документа в коллекции?
Какую ошибку вы получаете при выводе на консоль при попытке этого? Вы установили разрешения для своего пожарного хранилища, чтобы разрешать запросы?
Схема базы данных, которую вы разместили, сбивает с толку, может быть, более полезен фактический снимок экрана вашей установки с консоли Firebase.
EDIT
Чтобы получить данные для коллекции с помощью пожарного хранилища, вы должны построить правильный путь к нужной коллекции. В вашем примере, сделав что-то вроде this.db.collection(schoolName).get()
, вы получите все документы в этой коллекции. Примечание: ЭТО НЕ ПОЛУЧИТ ЛЮБЫХ ПОДПИСЕЙ! Этот тип запросов не поддерживается Firebase на момент написания этой статьи.
Допустим, вы хотите получить все документы из подколлекции 'kitProducts'. Этого можно достичь, выполнив this.db.collection(schoolName + "/1st/kitProducts").get()
. При этом возвращаются все документы из подколлекции «kitProducts», которые находятся под документом с идентификатором «1-й» в коллекции schoolName. Вы должны построить эти пути, чтобы запросить их.
Похоже, вы работаете с аудиторией в реальном времени над сборником. Если это ваше намерение, вы должны использовать функцию onSnapshot()
. Взяв более ранний пример, напишите что-то вроде this.db.collection(schoolName + "/1st/kitProducts").onSnapshot()
. В этом случае событие будет генерироваться каждый раз, когда документ в подколлекции kitProducts редактируется, удаляется или добавляется.
Больше чтения:
https://firebase.google.com/docs/firestore/query-data/listen#listen_to_multiple_documents_in_a_collection
https://firebase.google.com/docs/firestore/query-data/get-data#get_all_documents_in_a_collection