Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

131
Vistas
¿Cómo empujar un objeto que viene del cartero al objeto anidado?

Tengo un problema al enviar estos datos a un objeto anidado.

Esto es lo que puse en cartero como formato JSON:

 "productId":"621256596fc0c0ef66bc99ca", "quantity":"10"

aquí está mi código en mi controlador

 module.exports.createOrder = async (data) => { let product = data.productId; let oQuantity = data.quantity let totAmount = data.totalAmount return User.findById(product).then(user =>{ user.userOrders.products.push({productId:product}) user.userOrders.products.push({quantity:oQuantity}) if (user) { return user.save().then((savedOrder,err)=>{ if (savedOrder) { return user } else { return 'Failed to create order. Please try again' } }) } else { return "try again" } }) }

mi esquema es:

 userOrders:[ { products:[ { productName:{ type: String, required: [true, "UserId is required"] }, quantity:{ type: Number, required: [true, "Quantity is required"] } } ], totalAmount:{ type: Number, required: [true, "Quantity is required"] }, PurchasedOn:{ type: Number, default: new Date() } } ] })

tengo estos errores en mi CLI

 user.userOrders.products.push({productId:product}) ^ TypeError: Cannot read properties of null (reading 'userOrders')

Actualmente deseo simplemente poner estos datos del cartero en el objeto anidado, pero creo que no estoy usando bien el caso de uso de inserción. ¿Algun consejo?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

user no se encuentra y contiene null . User.findById(product) devuelve un resultado vacío. El product ID no se puede encontrar en User . Primero, verifique si se encontró al usuario, luego, presione los productos:

 module.exports.createOrder = async (data) => { let product = data.productId; let oQuantity = data.quantity let totAmount = data.totalAmount return User.findById(product).then(user => { if (!user) { return "try again"; } user.userOrders.products.push({productId:product}) user.userOrders.products.push({quantity:oQuantity}) return user.save().then((savedOrder, err) => { if (savedOrder) { return user; } else { return 'Failed to create order. Please try again'; } }); }); };
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda