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

194
Vistas
Backend en inserciones duplicadas de heroku/frontend en solicitud de duplicado de heroku (no lo sé)

Tengo una aplicación en heroku, separada por atrás y por delante.
atrás: node + express + mysql
frente: vue
la aplicación funciona bien, pero tengo un error aleatorio: a veces tengo registros duplicados insertados desde la interfaz. (Supongo que el error viene del frente)
desde la interfaz utilizo fetch para agregar los registros

 const requestOptions = { method: "POST", headers: { "Accept": "application/json", "Content-Type": "application/json" }, body: JSON.stringify({ data: data, ...: ..., }), }; const response = await fetch(`url_backend_heroku/api/add`, requestOptions);

los registros se insertan correctamente, pero a veces se insertan duplicados con la siguiente identificación correcta

¿Podría ser que fetch esté enviando 2 solicitudes en algunos casos?
antes de implementar en heroku en mi máquina local, nunca duplico registros
Llevo dias dando vueltas y no encuentro por que pasa esto

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Sí, es posible que estés enviando 2 solicitudes a alguna parte. Ponga registros en heroku ATRÁS en el punto final específico para ver qué está sucediendo exactamente. Además, mientras realiza la solicitud desde el front-end, verifique la pestaña de su red en las herramientas de desarrollador para ver si realmente está activando la solicitud dos veces. Porque como dijiste registros duplicados pero tienen identificaciones correctas, solo podría significar lo que dijiste.

Además, esto puede ser cierto o no, pero el servidor de heroku duerme por inactividad, por lo que es posible que cause un problema, pero no estoy completamente seguro de eso, tendré que verificar el código y el entorno para eso.

about 4 years ago · Juan Pablo Isaza Denunciar

0

mirando el registro de heroku (atrás) parece que se insertaron 2 registros normalmente
mirando la pestaña de red en el navegador, solo aparece 1 solicitud: OPCIONES (204) y POST (200)
la tabla tiene un id que es la llave primaria nada complicado
por otro lado estoy en un plan Dynos Hobby que no tiene tiempos de sueño (si es gratis)

poner aquí parte o mi backend

base de datos.js

 const mysql = require('mysql') const { promisify } = require('util') const config = { database keys } const pool = mysql.createPool(config); pool.getConnection((err: any, connection: any) => { if (err) { if (err.code === 'PROTOCOL_CONNECTION_LOST') { console.error('DATABASE CONNECTION WAS CLOSED') } if (err.code === 'ER_CON_COUNT_ERROR') { console.error('DATABASE HAS TO MANY CONNECTIONS') } if (err.code === 'ECONNREFUSED') { console.error('DATABASE CONNECTION WAS REFUSED') } } if (connection) connection.release() console.log('DB is Connected') return }) pool.query = promisify(pool.query) export default pool

controlador.js

 import pool from '../database'; public async insert(req: Request, res: Response) { let body = req.body try { const response = await pool.query('SELECT MAX(id) + 1 as idNew FROM table') let data = {Id: response[0].idNew, ...body} //before it had an auto_increment id and it also failed const result = await pool.query('INSERT INTO table set ?', [data]) res.json({ insertId: response[0].idNew, message: "Saved OK" }) } catch (error) { console.log("error", error) return res.status(500).send("error") } }

¿Puede ser un problema de recuperación? no intentes usar axios por ejemplo

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