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

146
Views
Tener problemas para insertar varios registros a la vez sin usar for loop en la base de datos del servidor sql usando node.js

Hola chicos, soy nuevo en el uso de la biblioteca mysql en el nodo js y estoy interesado en la posibilidad de insertar varias filas a la vez en la base de datos. Creé un código simple que captura la identificación de registro del usuario de la tabla de la base de datos y usa índices de roles que ese usuario ha seleccionado. Y ahora quiero agregar el ID de usuario y rol en la tabla Role_User que tiene user_id y role_id respectivamente.

Digamos que quiero hacer esto 3 veces sin usar loop:

 Insert Into User_role VALUES (1,20); Insert Into User_role VALUES (2,20); Insert Into User_role VALUES (3,20);

, donde los números 1,2,3 de las primeras columnas son índices de roles.

 Error I'm getting is RequestError: Incorrect syntax near '?'.

¿Cómo puedo hacer que esta consulta funcione?

 if(req.body.roles){ var sqlQuery = `SELECT ID from Test_user Where email = @email`; var indexiRola = findPositions(db.ROLES, req.body.roles); request.input('role', db.sql.NChar, req.body.roles); request.query(sqlQuery).then( id => { let ids = Array(req.body.roles.length).fill(id.recordset[0].ID); console.log(ids); // [20, 20, 20] let roleUsers = createSeperateLists(indexiRola, ids); console.log(roleUsers); // [ [ 1, 20], [ 2, 20], [ 3, 20] ] var insertQuery = `INSERT INTO Role_User ("role_ID", "user_id") VALUES ?`; request.query(insertQuery, [roleUsers], function(err, result){ if(err) throw err; console.log("Successfull insertion"); }); }) }
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Comprueba si te ayuda, por favor. No puedo verificar que funcione, por supuesto.

¡No está completo, al contrario! request.query es asíncrono y ese código debe revisarse.

Al menos, este código, como espero, no interrumpe RequestError: Incorrect syntax near '?'.

Por favor:

  • comprobar si la revisión funciona para una entrada
  • siempre que obtenga la solución completa, compártala con nosotros
 if (req.body.roles) { var sqlQuery = `SELECT ID from Test_user Where email = @email`; var indexiRola = findPositions(db.ROLES, req.body.roles); request.input('role', db.sql.NChar, req.body.roles); request.query(sqlQuery).then( id => { let ids = Array(req.body.roles.length).fill(id.recordset[0].ID); console.log(ids); // [20, 20, 20] let roleUsers = createSeperateLists(indexiRola, ids); console.log(roleUsers); // [ [ 1, 20], [ 2, 20], [ 3, 20] ] // I removed the double quotes from the names and, // VALUES (?, ?) - this is the right syntax for SQL const insertQuery = 'INSERT INTO Role_User (role_ID, user_id) VALUES (?, ?)'; // Then, forEach roleUsers // By the way, [roleUsers] yields an array of arrays of arrays, not cool roleUsers.forEach( roleUser => { request.query( insertQuery, roleUser, // Oh! Shoot!!! This is async. // Man, you will have to deal with it. // Please, share with us the final solution! function(err, result) { if (err) throw err; console.log("Successfull insertion"); } ); } ); }) }
about 4 years ago · Juan Pablo Isaza 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!