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

175
Views
¿Por qué sucede esto en SQL y cómo resolverlo?

Estoy desarrollando un servidor que toma las solicitudes enviadas por POST y las distribuye a los agentes activos que consultan una base de datos MySQL. Tengo dos tablas, la tabla de users y la tabla de requests . Cada vez que recibo una nueva solicitud, ejecuto una consulta que consulta los agentes activos y los ordena por número de solicitudes en cola y la marca de tiempo de la última acción realizada. Hasta ahora funciona bien.

El problema es que cuando tengo un agente que necesita desconectarse, tengo que redistribuir las solicitudes en cola entre los otros agentes. Para ello implementé un forEach que pasa por cada solicitud, luego realizo la consulta de agentes activos y tomo la primera fila y le asigno la solicitud a esa. La falla es que no sé por qué al mismo agente se le asigna la misma tarea, ya que la consulta del agente activo se repite para cada solicitud y, por lo tanto, debería aumentar la cantidad de solicitudes en cola del agente inmediatamente anterior.

Aquí está el código que he implementado:

 app.post('/panel/redist', function (peticion, respuesta) { pool.getConnection(function (error, connection) { let query = '' // Look pends requests ## query = `select * from solicitudes where status = 1` connection.query(query, function (error, solicitudes, campos) { if (solicitudes.length > 0) { solicitudes.forEach(solicitud => { // Look active agents and order by number of requests and timestamp query = `select usuarios.id, nombre, count(agente) conteo, last_action from usuarios left join solicitudes on usuarios.id = solicitudes.agente where usuarios.login = 'active' and tipo_usuario = 1 group by nombre order by conteo asc, last_action asc` connection.query(query, function (error, agentes, campos) { if (agentes.length > 0) { query = `UPDATE solicitudes SET agente = ${connection.escape(agentes[0].id)}, status = '2' WHERE id=${solicitud.id}` connection.query(query, function (error, campos, filas) { console.log(`Success asign to:${solicitud.id}`) }) } }) }) } }) connection.release() respuesta.json({ type: 'success' }) }) })

Esto está en Node.js usando el conector mysql2.

Gracias.

about 4 years ago · Juan Pablo Isaza
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!