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

93
Vistas
Http PUT elimina los datos que no han sido modificados

Estoy tratando de editar una base de datos JSON de turnos. Estoy escribiendo en Javascript usando reaccionar. Esta es mi comprensión de la sintaxis PUT:

 const editShift = async (changed, id) => { const res = await fetch(`http://localhost:5000/shifts/${id}`, { method: 'PUT', headers: { 'Content-type': 'application/json' }, body: JSON.stringify(changed) }) const data = await res.json() setShifts([...shifts, data]) }

datos.json:

 { "shifts": [ { "title": "test", "startDate": "2018-06-25T07:30:00.000Z", "endDate": "2018-06-25T08:00:00.000Z", "allDay": false, "id": 1 }, { "title": "test2", "startDate": "2018-06-28T07:30:00.000Z", "endDate": "2018-06-28T08:00:00.000Z", "allDay": false, "id": 2 } ] }

El resultado es que el nuevo turno mantendrá solo los campos que se han modificado y eliminará el resto. ¿Alguna idea de por qué?

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

0

La solicitud PUT debería funcionar así.

Una solicitud PUT debe PONER los datos en el lugar del registro anterior. Le gustaría usar una solicitud PATCH solo para parchear datos en el registro anterior.

Aparte de eso, depende de su punto final /shifts sobre cómo se maneja esto realmente.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Para obtener turnos anteriores, debe usar una devolución de llamada dentro de setShifts como:

 setShifts(prevShifts => ([...prevShifts, data]))
about 4 years ago · Juan Pablo Isaza Denunciar

0

Para una pregunta como esta, sería útil si publicara ejemplos de datos antes y después

  • base de datos vacia
  • solicitud n.º 1, la carga útil es igual a X
  • solicitud n.º 2, la carga útil es igual a Y

Además, saber qué está haciendo su controlador de servidor ayudaría a determinar qué está pasando. Tengo la sensación de que lo que está pasando es algo como esto.

 // API handler (req) => { const dbData = getDBData(); dbData.shifts = req.shifts; // overwrite old with new }

Cuando lo que necesitas es algo como

 (req) => { const dbData = getDBData(); req.shifts.forEach((newShiftData) => { const shiftId = newShiftData.id; if (dbData[shiftId]) { dbData[shiftId] = { ...dbData[shiftId], ...newShiftData }; // merge old with new } }); // - check if data changed // - update DB }
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