Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

487
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!