У меня возникли проблемы с использованием подписки и наблюдаемых
вот мой код
это мой инвентарь.service.ts
getInventoryList = (page: string,pageSize,size) => {
const userLocation = this.authService.getUserLocation();
let queryParams = `?page=${page}&loc=${userLocation}&size=${size}&pageSize=${pageSize}`;
this.http
.get<{ success: boolean, message: string, inventoryList: any }>(BACKEND_URL_item + '/getInventoryList' + queryParams)
.pipe(retry(3), catchError((data) => {
return EMPTY;
}),map((data) => {
if (page === 'inventory') {
return {
extractedInventoryList: data.inventoryList.map((item: any) => {
return {
itemId: item._id,
itemID: item.itemID,
itemName: item.itemName,
itemSellingPrice: item.itemSellingPrice,
itemPurchasePrice: item.itemPurchasePrice,
itemAveragePurchasePrice: item.itemAveragePurchasePrice,
itemBaseUnit: item.itemBaseUnit,
itemCategory: item.itemCategory,
itemReorderPoint: item.itemReorderPoint,
itemTotalQuantity: item.itemTotalQuantity,
itemSumQuantity: item.itemSumQuantity,
itemLocation: item.itemLocation,
itemSubLocation: item.itemSubLocation
};
}),
success: data.success,
message: data.message
};
} else {
return {
extractedInventoryList: data.inventoryList.map((item: any) => {
return {
itemId: item._id,
itemName: item.itemName,
itemTotalQuantity: item.itemTotalQuantity,
itemLocation: item.itemLocation,
itemSubLocation: item.itemSubLocation
};
}),
success: data.success,
message: data.message
};
}
}))
.subscribe((transformedData) => {
this.inventoryList = transformedData.extractedInventoryList;
this.inventoryListObserver.next({
inventoryList: [...this.inventoryList],
success: transformedData.success,
message: transformedData.message
});
}
});
}
getInventoryListListener = () => {
return this.inventoryListObserver.asObservable();
}
вот мой инвентаризованный инвентарь.component.ts
getInventoryItem(pageSize,size) {
for(let x=0;x<size;x= x+10){
this.inventoryService.getInventoryList('inventory',pageSize,x);
this.itemListSubscription = this.inventoryService
.getInventoryListListener()
.subscribe((responseData: { inventoryList: IItem[], success: boolean, message: string }) => {
if (!responseData.success) {
this.spinner.stop();
} else {
this.itemList = this.itemList.concat(responseData.inventoryList);
this.spinner.stop();
this.itemListBackup = this.itemList;
}
this.showToasts(responseData.message, responseData.success);
});
}
}
Я пытаюсь получать данные каждые 10 элементов .. Я использую mongodb, и он возвращает именно то, что я хочу, но когда я получаю его через Angular, он вставляет несколько дублированных массивов в itemList
Может кто-нибудь объяснить, почему это так?