Tengo una array de items a los que quiero agregar un valor asíncrono getProductMinQuantity .
El problema es que el render res.status(200)... se envía antes de que se haya editado item.order_quantity_minimum.
Pensé que un mapa como el de abajo crearía una nueva promesa con los elementos actualizados.
newResult es un tipo Promise<any>[] | undefined , no puedo hacer .then .catch para luego ejecutar mi res.status en él.
const getCart = async () => { ... let newResult = result.data?.line_items.physical_items.map(async (item: any) => item.order_quantity_minimum = await getProductMinQuantity(item.product_id) ) res.status(200).json({ data: result.data ? normalizeCart(result.data) : null, }) }¿Alguna idea de cómo puedo arreglar eso?
Pregunta clásica; no puede usar await dentro de un método de matriz sincrónica (mapa, forEach, filtro, etc.). En su lugar, utilice un bucle for...of .
let newResult = [] for(let item of result.data?.line_items.physical_items) { item.order_quantity_minimum = await getProductMinQuantity(item.product_id) newResult.push(item); } // Do something with newResult