Al filtrar datos en el backend, por alguna razón, los datos de respuesta esperados son incorrectos, pero los registros están bien.
básicamente tengo esta información dentro de mi base de datos mongodb:
{ _id: new ObjectId("626a2f00551aa3876e2562eb"), username: 'Warren Buffet', email: 'pog@gmail.com', money: 158, trades: [ { coin: 'BTC', open: 39341.40429922862, amount: 500, id: '38b6dbf9-8641-46c0-a2ed-6438dad3515c', _id: new ObjectId("626a2ff1551aa3876e2562f2") }, { coin: 'SOL', open: 99.21601863521198, amount: 72, id: '71e1034e-1466-4d61-b490-22c096c616c6', _id: new ObjectId("626a3e833aa72fb27a936256") }, { coin: 'VET', open: 0.051906156364343044, amount: 100, id: '0c1d687c-9efc-4e1f-b1c2-edff3416fc41', _id: new ObjectId("626a3e913aa72fb27a93625c") }, { coin: 'MKR', open: 1678.9138538755535, amount: 120, id: '18c64d96-ac8d-4c4b-b320-b06ce226e845', _id: new ObjectId("626a3ea03aa72fb27a936262") }, { coin: 'DOT', open: 16.923201350318724, amount: 50, id: '0fd4f53e-335c-4c66-b99c-47ba1898d954', _id: new ObjectId("626a3f023aa72fb27a9364e9") } ], __v: 5 }hay varios documentos como este.
let users = await User.find(); const data = users.map((user) => { const money = user.money.toFixed(2); let investedMoney = user.trades.map((value) => value.amount); investedMoney = investedMoney.reduce((prev, curr) => prev + curr, 0); console.log(investedMoney); //I get the expected value return { username: user.username, money: money + investedMoney, //the actual response data contains only 'money', not 'money + investedMoney' trades: user.trades.length, }; }); res.status(200).json({ success: true, data: data }); este es mi codigo El objetivo es recopilar el nombre de usuario, el dinero (tanto invertido como no invertido) y el número de transacciones. Por alguna razón, mis datos de respuesta contienen solo el valor del money , ignorando por completo el dinero moneyInvested . Lo raro es que intenté desconectarme de moneyInvested y obtuve el valor esperado. No estoy seguro de lo que está mal aquí para ser honesto.
Lo encontré, el dinero var es una cadena. Reemplazar
return { username: user.username, money: money + investedMoney, //the actual response data contains only 'money', not 'money + investedMoney' trades: user.trades.length, };con
return { username: user.username, money: Number(money) + investedMoney, trades: user.trades.length, };