как получить список документов в коллекции, используя угловой камин - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь получить список документов в собраниях, но не получаю никаких документов, Это код, который я пытаюсь `

schoolProductCollectionFetch(schoolName){

   const school = this.db.collection(schoolName)
   this.school$ = school.snapshotChanges().pipe(map(schoollist=>schoollist.map(s=>{
     const data = s.payload.doc.id;
     console.log(data);
     return data;
   })));
   return this.school$

  }

Формат базы данных: SchoolCollection-> документация-> ProductCollection

SchoolCollection:{
   1st:{products:{}},
   2nd:{products:{}},
}

Попытался представить формат данных, как в Firestore, я хочу получить 1-е, 2-е, которые являются идентификаторами документов для SchoolCollection, Привязка схемы:

Schema Screenshot Примечание: пожалуйста, дайте мне знать, если вам нужно больше деталей, чтобы понять запрос

1 Ответ

0 голосов
/ 11 апреля 2019

Первый вопрос, который у меня есть: вы передаете в функцию параметр '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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...