Коллекции в документах в пожарной и угловой 7 - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть следующий код, чтобы получить две наблюдаемые в одной и иметь возможность манипулировать ими.

public products: any;


ngOnInit() {
        this.products = this.productService.products().snapshotChanges().map(productSnaps => {
          return productSnaps.map(product => {
            const productData = product.payload.doc.data();
            const productId = product.payload.doc.id;
            return this.productService.getProductImages(productId).snapshotChanges().map(uploadSnap => {
              let number = 0;
              return uploadSnap.map(upload => {
                if(number == 0) {
                  number++;
                  return upload.payload.doc.data();
                }
              })
            })
            .map(uploads => {
              return {productId, ...productData, uploads: uploads};
            })
          })
        })
        .flatMap(products => Observable.combineLatest(products));
      }

Службы products () и getProductImages () следующие:

type productsCollection = AngularFirestoreCollection<Product[]>;

products(): productsCollection {
    return this.afs.collection<Product[]>('products');
  }

getProductImages(productId: string) {
    return this.afs.doc<Product>(`products/${productId}`).collection('uploads');
  }

У меня есть база в firebase со следующей структурой: мой estructur из firebase

Но он не компилирует меня с rxjs 6, я пытался сделать это так:

ngOnInit() {    
    this.products = this.productService.products().snapshotChanges().pipe(map(productSnaps => {      
        return productSnaps.map(product => {          
          const productData = product.payload.doc.data();
          const productId = product.payload.doc.id;

          return this.productService.getProductImages(productId).snapshotChanges().pipe(map(uploadSnap => {
              let number = 0;
              return uploadSnap.map(upload => {
                if (number === 0) {
                  number++;
                  return upload.payload.doc.data();
                }
              });
            }),
            map(uploads => {
              return {productId, ...productData, uploads: uploads};
            })
          );
        });

      })
    ).flatMap(products => Observable.combineLatest(products));    
  }

Но отметьте flatMap и объединениеПоследняя ошибка

Что в конце счетов мне нужно, так это то, что в переменных продуктах хранятся как документы коллекции "продукты", так иколлекция, которая находится внутри каждого документа и содержит изображения этих.

, и вы можете использовать их следующим образом:

<img height="250" *ngIf="product.uploads[0]" mat-card-image [src]="product.uploads[0].url" />
<mat-card-title>{{ product.name }}</mat-card-title>

резервуары для вас, помогите!.

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