diff --git a/workloads/commerce-backend/src/api/admin/product-import/route.ts b/workloads/commerce-backend/src/api/admin/product-import/route.ts index 7602c3f..dee3449 100644 --- a/workloads/commerce-backend/src/api/admin/product-import/route.ts +++ b/workloads/commerce-backend/src/api/admin/product-import/route.ts @@ -116,8 +116,13 @@ export async function POST(req: MedusaRequest<{ csv: string }>, res: MedusaRespo stockLocationService.listStockLocations({}), fulfillmentService.listShippingProfiles({}), salesChannelService.listSalesChannels({}), - productService.listProductCategories({}), - productService.listProductCollections({}), + // select explicito -- sin el, name/title llegaban undefined (el + // default de estos module services no siempre trae todos los + // escalares, a diferencia de la capa HTTP del Admin API, confirmado + // en vivo: la ruta /admin/product-categories con fields=id,name si + // los trae completos). + productService.listProductCategories({}, { select: ["id", "name"] }), + productService.listProductCollections({}, { select: ["id", "title"] }), ]); const locationId = locations[0]?.id; @@ -131,8 +136,12 @@ export async function POST(req: MedusaRequest<{ csv: string }>, res: MedusaRespo return; } - const categoryByName = new Map(categories.map((c) => [c.name.toLowerCase().trim(), c.id])); - const collectionByName = new Map(collections.map((c) => [c.title.toLowerCase().trim(), c.id])); + const categoryByName = new Map( + categories.filter((c) => c.name).map((c) => [c.name.toLowerCase().trim(), c.id]), + ); + const collectionByName = new Map( + collections.filter((c) => c.title).map((c) => [c.title.toLowerCase().trim(), c.id]), + ); const results: RowResult[] = [];