Estoy tratando de llenar una matriz, sin embargo, cuando intento imprimirla, la matriz siempre aparece vacía. No sé si esto podría deberse a la función asíncrona dentro de mi ciclo:
static async getInventoryForBox(box, quantities) { const thisBoxInventory = box.toObject().inventory; const items = []; for (const object of thisBoxInventory) { const inventoryItem = await InventoryController.getInventoryItem(object); let updatedJSON = { }; const cardID = inventoryItem.card; const quantitiesArray = inventoryItem.toObject().quantities; const quantityID = quantitiesArray[0]; const quantityValue = quantities.find(object => object._id.$oid === quantityID.toString()); updatedJSON = { card: { $oid: cardID }, quantity: quantityValue.value, box: { $oid: box._id }, list: null } items.push(updatedJSON); } console.log("ItemsA", items); // Prints [] return items; }
Anteriormente, el ciclo era un forEach, sin embargo, entendí que eso trae más problemas de los que resuelve, así que lo cambié por un ciclo for of, sin embargo, eso no parece solucionar el problema.
Estoy llamando a la función desde aquí:
router.get('/', TokenController.isAValidToken, async (req, res) => { const { setID } = req.query; try { if (setID != null) { const boxes = await BoxesController.getBoxesForSet(setID); res.json(boxes); } else { const boxes = await BoxesController.getAllBoxes(); boxes.forEach(async box => { const quantities = await BoxesController.readFile(); const items = await BoxesController.getInventoryForBox(box, quantities); console.log('Items', items); }); res.json(boxes); } } catch (error) { ErrorController.errorCallback(error, res); } });