He encontrado muchos problemas y soluciones para esto en línea, pero soy un poco nuevo y, a decir verdad, no pude hacerlo funcionar. Probablemente sea bastante tonto, pero sí, necesito ayuda :)
TypeError: Cannot convert undefined or null to object at Function.assign (<anonymous>) at organizeCategoryData (C:\Users\alan_\Desktop\melonwallet\utils\records.js:59:35) at getRecords (C:\Users\alan_\Desktop\melonwallet\controllers\recordController.js:125:30) at processTicksAndRejections (node:internal/process/task_queues:96:5) organizeCategoryData(categoryList, amountByCategory) { const categoryObject = Object.assign( /// LINE 59 ...categoryList.map(category => ({ [category.name]: amountByCategory[category._id] || 0 })) ) categoryList.forEach(category => { category.amount = categoryObject[category.name] }) return categoryObject } const categoryObject = organizeCategoryData( //// LINE 125 categoryList, amountByCategory )¡Muchas gracias!
/ editar: olvidé aclarar que esto solo sucede cuando intento iniciar sesión con un usuario creado previamente.
organizeCategoryData(categoryList, amountByCategory) { const cList = categoryList || []; //This will add a check for null and undefined const categoryObject = Object.assign( /// LINE 59 ...cList.map(category => ({ [category.name]: amountByCategory[category._id] || 0 })) ) cList.forEach(category => { category.amount = categoryObject[category.name] }) return categoryObject}
Object.assign solo funciona con objetos. ...categoryList.map(...) es una matriz. Coloque Object.assign dentro del mapa (o forEach, ya que no devuelve nada). O eche un vistazo a Object.fromEntries.
const categoryObject = {}; categoryList.forEach(category => Object.assign(categoryObject, { [category.name]: amountByCategory[category._id] || 0 }) ); // or const categoryObject = Object.fromEntries( categoryList.map(cat => ([cat.name, amountByCategory[cat._id] || 0])) );