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

171
Visualizações
¿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 à 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