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

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

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 Report

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