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

172
Vistas
¿Cómo insertar múltiples consultas en el nodo js mysql después de leer desde el archivo de Excel y la inserción depende de las filas de Excel?

Tengo un escenario en el que necesito leer el contenido de un archivo de Excel. En el archivo de Excel hay una columna que indica si una fila es primaria o no. Otros serán filas secundarias de la fila principal. Necesito insertar primario en una tabla. Obtenga el último insertId y almacene las filas secundarias en otra tabla. Pero siempre recibo algún error relacionado con "cosas de clave externa secundaria". A continuación se muestra el enfoque que estoy siguiendo.

Leyendo los contenidos de Excel con el siguiente código.

 let reader = require('xlsx'); module.exports.storeData = () =>{ const file = reader.readFile('./data/file.xlsx'); let data = [] const sheets = file.SheetNames // for(let i = 0; i < sheets.length; i++) // { const temp = reader.utils.sheet_to_json( file.Sheets[file.SheetNames[sheets.indexOf('sheet-name')]]) temp.forEach((res) => { data.push(res) }) // } this.pushToDB(data); }

A continuación se muestra cómo verifico si la fila es primaria y envío datos a 1 tabla y a la otra tabla. También estoy usando async. Pero no obtener last_insertId de forma asíncrona. Algunos datos de la tabla principal se insertan pero no los datos de la tabla secundaria

 let last_insert_id = 0; const executeQuery = async (con, query, params) => { return new Promise((resolve, reject) => { con.query(query, params, (err, result) => { if (err) { return reject(err); } return resolve(result); }); }); } module.exports.pushToDB = async (data) => { var mysql = require('mysql'); var con = mysql.createConnection({ host: "localhost", user: "root", password: "", database: "data-db" }); con.connect(async function(err) { if (err) throw err; console.log("Connected!"); data.forEach(async (res, ind) => { try { if(res['Primary_Col'] == 'Yes'){ let param = ['col1'] const query1 = "INSERT INTO Main_Table (COL1) VALUES (?)"; const result = await executeQuery(con, query1, param); last_insert_id = result.insertId; console.log(last_insert_id); } if(res['Primary_Col'] == 'No'){ let param = ['col1', 'col2', 'col3' ] const query1 = "INSERT INTO SUB_TABLE (COL1, COL2, COL3) VALUES (?,?,?)"; const result = await executeQuery(con, query1, param.map(String)); //param array values will be changes to string } } catch (err) { con.destroy; throw err; } }); }); } this.storeData();

el error exacto

 Error: ER_NO_REFERENCED_ROW_2: Cannot add or update a child row: a foreign key constraint fails
about 4 years ago · Juan Pablo Isaza
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