Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

143
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda