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

142
Vistas
¿Cómo convertir una matriz de valores de cadenas en valores numéricos para el esquema Mongoose que contiene pocos campos numéricos?

Mi problema es que tengo una colección MongoDB llamada 'vendida', que contiene algunos campos de cadena y algunos campos numéricos.

 const soldSchema = new Schema( { sku: String, hsn: String, qty: Number, article: String, mrp: Number, disc: Number, taxrate: Number, tax: Number, total: Number, orderid: String, }, { collection: "sold", timestamps: true } ); const Sold = mongoose.model("sold", soldSchema); module.exports = { Customer, Stock, Sold, Order };

El 'Cliente', 'Stock' y 'Pedido' son otros esquemas que se encuentran en el mismo módulo.

Para el esquema vendido, recibí los datos del front-end, que es una matriz de objetos como este, como se muestra a continuación:

 [ { sku: '10005', hsn: '3652', qty: '3', article: 'tops', mrp: '550', disc: '0', taxrate: '5', tax: '82.50', total: '1732.50', orderid: '1633515982545' }, { sku: '10005', hsn: '3652', qty: '3', article: 'tops', mrp: '550', disc: '0', taxrate: '5', tax: '82.50', total: '1732.50', orderid: '1633515982545' }, { sku: '10005', hsn: '3652', qty: '3', article: 'tops', mrp: '550', disc: '0', taxrate: '5', tax: '82.50', total: '1732.50', orderid: '1633515982545' } ]

La matriz anterior es el resultado de req.body, es decir, console.log(req.body)

Si cambio todos los campos para escribir 'String' en soldSchema, entonces todos los valores se insertan de una sola vez.

Esta función funciona bien con todos los valores de cadena en el esquema.

 async function insertManySold(req, res) { let items = req.body; try { let result = await model.Sold.insertMany(items); res.json(result); } catch (error) { res.json(error); } }

Pero, si cambio los tipos de datos a Números para algunos campos en el esquema como se mencionó anteriormente, entonces no funciona. Por favor, hágame saber cómo lograr esto.

He buscado muchos artículos en la web pero no pude encontrar la respuesta. ¿Me podría ayudar?

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

0

Su código anterior no funcionará para cadenas que contengan caracteres como (abc...z), Number convertirá cualquier cadena que contenga alfabetos a NaN, debería intentarlo de esta manera.

 const object1 = { sku: '10005', hsn: '3652', qty: '3', article: 'tops', mrp: '550', disc: '0', taxrate: '5', tax: '82.50', total: '1732.50', orderid: '1633515982545' } const data = {} for (const [key, value] of Object.entries(object1)) { const temp_value = Number(value) // Here we are checking for NaN and 0 data[key] = temp_value ? temp_value : temp_value == 0 ? 0 : value } console.log(data);

Su camino dará este error ejecutar debajo del código

 let items= { sku: '10005', hsn: '3652', qty: '3', article: 'tops', // Look for this key mrp: '550', disc: '0', taxrate: '5', tax: '82.50', total: '1732.50', orderid: '1633515982545' } let data = {} for ( let key in items ) { data[key] = Number(items[key]) } console.log(data)

about 4 years ago · Juan Pablo Isaza Denunciar

0

cuando publiqué esta pregunta, era muy nuevo en javascript, por lo que no podía pensar en ello como un programador, la respuesta es muy simple, todo lo que tiene que hacer es analizar el objeto, es decir, req.body nuevamente. quiero decir, crea un nuevo objeto e inserta todos los valores en él mediante un bucle sobre req.body. como esto.

 let items=req.body let data = {} for ( let key in items ) { data[key] = Number(items[key]) }

si el req.body tiene algún valor numérico, se analizará en números y se almacenará en los datos del nuevo objeto.

esta solución funcionó para mí si hay algún otro enfoque para lo mismo, compártalo conmigo aquí.

tanques

about 4 years ago · Juan Pablo Isaza Denunciar

0

Sugiero que esto se maneje directamente desde el front-end. De lo contrario, debe convertir para cada clave numérica conocida, ya que este Number convertirá cada cadena que tenga valores numéricos en números. cadena con char. datos en NaN.

y, como está almacenando sku,hsn,orderId en String, pero Number se convertirá en un valor numérico. así que sugiero encarecidamente manejar esto directamente desde la interfaz.

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