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

496
Visualizações
Cómo insertar registros en dos tablas conectadas entre sí en nodejs dinámicamente

Esta puede ser una pregunta muy simple, aunque me tomó mucho tiempo y todavía no pude resolverla. Necesito dos tablas en postgresql y que se actualicen dinámicamente en mi aplicación nodejs. La tabla 1 tiene dos columnas (obj_id, obj_name), la tabla 2 tiene más columnas, mientras que incluye una columna como "obj_id", ya que "fk" se refiere al "obj_id" de la tabla 1; Intenté insertar un registro en la tabla 1 y luego realizar un procesamiento e insertar el registro correspondiente en la tabla 2. Necesito el valor "obj_id" devuelto desde la primera inserción y lo uso junto con otros valores para hacer la segunda inserción. Estoy tratando de hacer esto con el siguiente código, mientras que siempre arroja un error que dice ( insertar o actualizar en la tabla "table2" viola la restricción de clave externa "rel_table2_table1" ).

 function uploadTable1(name,callback){ const client = new pg.Client(conString); client.connect(); client.on("drain", function () { client.end(); }); let insertTable1 = client.query(`INSERT INTO table1 (obj_name) VALUES ($1) RETURNING obj_id`, [name]); insertTable1.on("row", function (row,result) { callback(row.obj_id); });

}

 function uploadTable2(kk,ff) { return function (obj_id) { const client = new pg.Client(conString); client.connect(); client.on("drain", function () { client.end(); }); let uploadQuery = client.query("INSERT INTO table2 (kk,ff,obj_id) VALUES ($1,$2, $3)",[kk,ff, obj_id]); } }

Puedo ejecutar estas dos funciones manualmente una por una para insertar registros sin problemas, mientras que cuando las ejecuto juntas en el programa principal como se muestra a continuación, obtuve los errores mencionados anteriormente.

 uploadTable1("obj_name1",uploadTable2("kk1","ff1"));

Verifiqué que la tabla 1 se haya insertado correctamente y el valor del nuevo registro "obj_id" se haya pasado a la función de devolución de llamada que está haciendo la inserción de la tabla 2. Si bien lo extraño es que arrojan el error, parece que se quejan de que "fk" aún no existe cuando se insertan registros para la tabla 2, al menos cuando se ejecuta la función de devolución de llamada.

¿Cuáles son sus sugerencias para resolver estos conflictos?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Supongo que está haciendo dos conexiones separadas en dos funciones. ¿Tal vez la transacción uploadTable1 aún no se ha confirmado, cuando intenta uploadTable2("kk1","ff1") ? ..

Con esta suposición hecha, intente cambiar uploadTable1 a:

 function uploadTable1(name,callback){ const client = new pg.Client(conString); client.connect(); client.on("drain", function () { client.end(); let insertTable1 = client.query(`INSERT INTO table1 (obj_name) VALUES ($1) RETURNING obj_id`, [name]); insertTable1.on("row", function (row,result) { callback(row.obj_id); }); });

con idea, que client.end(); terminará la conexión "forzando" la confirmación...

O considere reescribir el código para ejecutar dos declaraciones en una sesión, una transacción en su lugar...

over 4 years ago · Santiago Trujillo 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