2017-04-08 14 views
0
私はangularfiredatabaseを使用してい

。私は自分の製品と私の製品ブランチに参加しようとしています。私は自分の製品ブランチから製品に数量を得たいと思っています。相続人Database 0が私の枝参加2つのfirebase観測

findAllProductsForBranch(branchName:string):Observable<any[]> { 

    const products$ = this.findProductsByProductKeys(this.findProductKeysPerBranch(branchName)); 
    products$.map((products) => { 
    products.forEach((product) => { 
     product.map((product) => { 
     Object.assign(product, 
     { 
      quantity: 
      this.db.object(`/products-branch/0/${product.$key}`) 
      .switchMap(product => product._quantity) 
     }) 
     }) 
    }); 
    //return products; 
    }) 
    .do(console.log) 
    .subscribe(); 
    return Observable.of([]); 
} 

製品の$のKEYが数量せずに製品の観察可能なが含まれているので、私は量を追加したいが、問題はどのようにあるのですか?このコードを実行すると、コンソールにundefinedが表示されます。イムは、私は私の質問への答えを見つけた今

+0

それを説明cartantのおかげで、これはあなたが使用しているパッケージですか? https://github.com/angular/angularfire2 – brennan

+0

はい – JarellGabon

答えて

0

、ほぼ一週間ここで立ち往生、彼はここにFork join two firebase observables

findAllProductsForBranch(branchName:string, branchKey: string):Observable<any[]> { 
    const products$ = this.findProductsByProductKeys(this.findProductKeysPerBranch(branchName)); 
    return products$.mergeMap((products) => { 
     return Observable.forkJoin(
      // Map the tours to the array of observables that are to 
      // be joined. Note that forkJoin requires the observables 
      // to complete, so first is used. 

      products.map((product) => this.db 
       .object(`/products-branch/${branchKey}/${product.$key}`) 
       .first() 
      ), 

      // Use forkJoin's results selector to match up the result 
      // values with the tours. 

      (...values) => { 
       products.forEach((product, index) => { product._quantity = values[index]._quantity; }); 
       return products; 
      } 
     ); 
    }); 
} 
関連する問題