I have 2 firebase list Raw Materials & Stock. The stock list contains objects with a raw material key. i use that key to fetch the raw material. I'm getting all the stock list , then when i iterate through each object in the list to join the raw material, the problem is that the observable returns only the first object. meaning, it doesn't iterate through all the list. here's my code
rawMaterialsStocksRef: AngularFireList<any>;
rawMaterialStockRef: AngularFireObject<any>;
private dbPathStock = '/raw_material_stock';
constructor(
private db: AngularFireDatabase,
private rawMaterialService: RawMaterialsManagementService
) {
this.rawMaterialsStocksRef = db.list(this.dbPathStock);
}
getRawMaterialStockList() {
const rawData = this.rawMaterialsStocksRef.valueChanges().pipe(
map(rawMaterialsStocks =>
rawMaterialsStocks.map(stock => ({
...stock
}))
),
switchMap(stockArr => from(stockArr)),
// gives the following
// { "factoryKey": "34""quantity": "34", "rawMaterialKey": "-NDNPe47CDTbjmwGgW_3"}
// { "factoryKey": "20", "quantity": "20", "rawMaterialKey": "-NDIjiVqKP-lLwJGwmic"}
switchMap(stock =>
// this service i use to fetch each raw material based on its key
this.rawMaterialService.getRawMaterial(stock.rawMaterialKey).valueChanges()
.pipe(
map(rawMaterial => {
return { ...stock, ...rawMaterial }
})
)
),
);
rawData.subscribe()
}
here is the result i'm getting
{
"factoryKey": "20",
"quantity": "20",
"rawMaterialKey": "-NDIjiVqKP-lLwJGwmic",
"code": "KLL2311",
"name": "Material 03"
}
as you can see i only got one successful join, despite the array containing multiple objects !
PLEASE HELP ME OUT I SPENT THE 3 DAYS TRYING EVERYTHING, DIDNT WORK OUT !
