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

152
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
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