Angular2嵌套可观察的购物车总数,但值返回未定义



我想计算购物篮的总量。我有 shoppingcartitem product 表。我有波纹管代码

cartTotals(qty = 0, total = 0) {
return this.af.database.list('ShoppingCartItem')
  .map(carts => {
    carts.map(cart => {
        this.af.database.object(`Product/${cart.productId}`)
        .subscribe(d => {
            cart.product = d;
        });
      return cart;
    });
    carts.forEach(cartItem => {
        qty += cartItem.quantity;
        total += cartItem.quantity * cartItem.product.price;
        // console.log(cartItem);
    });
    return {qty, total};
  });
}

返回 QTY 值有效,但 total 值返回不确定的

这个plunker

让我知道这是否有效,因为我没有整个源代码和API数据。

cartTotals(qty = 0, total = 0) {
  return this.af.database.list('ShoppingCartItem')
   .map(carts => carts.map(cart => cart.product = this.findProductFromCartId(cart.productId)))
   .map(carts => carts.map(cartItem => {
        cartItem.qty = cartItem.quantity + qty;
        cartItem.total = (cartItem.quantity * cartItem.product.price) + total;
        return cartItem;
    });
}
findProductFromCartId(id) {
    return this.af.database.object(`Product/${id}`)
        .flatMap(product => Observable.combineLatest(product));//add this onlyIF its returned FirebaseObservable Object
}

最新更新