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

528
Vistas
Inserción masiva en Mysql desde Object Array NodeJS

No estoy seguro de lo que me estoy perdiendo, pensé que poner Juegos entre paréntesis me permitiría hacer una inserción masiva en MySQL. Sin embargo, cuando hago esto, vuelve como (OBJETO, OBJETO). Si elimino los corchetes, solo obtengo un solo inserto, ¡pero funciona! ¿Alguna sugerencia para hacer una inserción masiva?

Breve muestra de la matriz

 [{title:xxx,link:https://xxxx,description:xxx.,xxx:xxxxx},{title:xxx,link:https://xxxx,description:xxx.,xxx:xxxxx}]

JavaScript

 // Writing the Games inside a json file fs.writeFile("feed.json", JSON.stringify(Games), function(err) { if (err) throw err; console.log("Saved!"); }); con.connect(function(err) { if (err) throw err; console.log("Connected!"); var sqlquery = "INSERT INTO gtable (title, link, description, company) VALUES ?"; let queryData = { sql: sqlquery, values: [Games] } con.query(queryData, function (err, result) { if (err) throw err; console.log("Number of records inserted: " + result.affectedRows); }); });
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Creo que su problema puede ser que está pasando una matriz de objetos mientras que MySQL espera una matriz de matrices.

Su formato es básicamente:

 var sqlquery = "INSERT INTO gtable (title, link, description, company) VALUES ?"; var values = [ [{title:xxx,link:https://xxxx,description:xxx.,xxx:xxxxx} {title:xxx,link:https://xxxx,description:xxx.,xxx:xxxxx}] ];

Cuándo debería ser:

 var sqlquery = "INSERT INTO gtable (title, link, description, company) VALUES ?"; var values = [ [[title1,link1,description1,xxx1], [title2,link2,description2,xxx2]] ];

Necesitaría convertir cada objeto en una matriz de solo sus valores. Lo que podrías hacer con algo como esto, creo:

 let sqlValues = Games.map(obj => Object.values(obj));

EDITAR: Tenía el formato incorrecto para el mapeo, corregido ahora.

over 4 years ago · Santiago Trujillo Denunciar

0

Creo que @otw tiene una solución sólida (y una explicación increíble de por qué sucede esto), pero para ofrecer una solución alternativa, podría hacer algo como esto:

 Games.forEach(game => { con.query('INSERT INTO gtable SET ?', game, insertErr => { if (insertErr) { throw new Error("Error inserting game " + game.title + "! " + insertErr); } console.log(`Inserted ${game.title}!`); }); })
over 4 years ago · Santiago Trujillo 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