Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

145
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!