Angular Cloud Firestore получает данные на основе зарегистрированного пользователя - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть Firestore, который будет выглядеть следующим образом: Cloud Firestore

Так что в нескольких словах у меня есть несколько пользователей, которые могут войти в мое приложение и создать рецепт. А на странице «Мой рецепт» у меня будет список рецептов, которые есть у пользователя. Итак, у меня есть 1 коллекция «Пользователь» и внутри этой 1 коллекции «Рецепты» с несколькими рецептами.

Я ввел логин Google Firestore, и он работает, когда я получаю uid. et c ... Это внутри auth.service.ts:

auth.service.ts

, и я хочу создать recipes.service.ts с методом getRecipes (), который будет getRecipes под users / $ (user.uid) / Recipes

Кто-нибудь может здесь помочь? Я не могу найти учебник для отображения данных с подколлекцией.

1 Ответ

0 голосов
/ 20 апреля 2020

Добро пожаловать в Stackoverflow!

Чтобы получить данные коллекций с помощью вложенной коллекции, вы можете легко вернуть их, используя код, подобный следующему: db.collection('users').doc('<user>').collection('Recipes').get(). Используя это, он вернет документ с вложенной коллекцией для каждого пользователя.

Однако нет никакого способа собрать вложенные коллекции вместе со всеми документами одновременно. Но есть хороший обходной путь, доступный здесь , который для вашего случая будет выглядеть примерно так:

this.firestoreService.colWithIds$('users').pipe(
 switchMap((users: any[]) => { 
   const us = users.map((r: any) => { 
     return this.firestoreService
       .col$(`users/${r.id}/recipes`)
       .pipe(
         map(recipes => Object.assign(user, {recipes}))
       ); 
     }); 
   return combineLatest(...us); 
 })
).subscribe(users => console.log(users);

Пока я не тестировал этот код , я считаю, что это хорошая отправная точка для вас, так как этот код получает значения users, сопоставленные с наблюдаемыми его подколлекциями. Однако эти значения Recipes отображаются обратно в значения user, а данные подгруппы Recipes содержатся в качестве нового свойства.

Дайте мне знать, помогла ли вам эта информация!

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