I'm learning how to make requests using node.js. My problem is that it generates these errors when making the requests (Cannot GET /Citaup/654fe24584f7a3d27e0a4c61) Failed to load resource: the server responded with a status of 404 (Not Found) Registro.js:146 Error: Error al actualizar la cita: Not Found modificarCita @ Registro.js:146, I have this request structured as follows:
The driver that performs the update is the following:
const Cita = require('../Models/Cita');
exports.actualizarCita = async (req, res) => {
try {
console.log('Datos recibidos en req.body:', req.body);
const { id } = req.params;
const { nuevaFecha, nuevaHora, nuevoRut, nuevoExamen, nuevoMotivo, nuevoIdMedico, nuevoEquipo, nuevoRutm } = req.body;
// Combinar fecha y hora
const nuevaFechaHora = new Date(`${nuevaFecha}T${nuevaHora}`);
const camposActualizados = {
fecha: nuevaFechaHora,
rutp: nuevoRut,
idex: nuevoExamen,
motivo: nuevoMotivo,
idmedico: nuevoIdMedico,
equipo: nuevoEquipo,
rutm: nuevoRutm,
};
// Encuentra y actualiza la cita, y devuelve la versión actualizada
const citaActualizada = await Cita.findOneAndUpdate(
{ _id: id },
camposActualizados,
{ new: true }
);
console.log('Cita encontrada y actualizada:', citaActualizada);
if (!citaActualizada) {
return res.status(404).json({ error: 'Cita no encontrada' });
}
res.json(citaActualizada);
} catch (error) {
console.error('Error al actualizar la cita:', error);
res.status(500).json({ error: 'Error al actualizar la cita' });
}
};
The model is the following:
const mongoose = require('mongoose');
const cita = new mongoose.Schema({
rutp: {
type: String,
required: true
},
idmedico: {
type: String,
required: true
},
idex: {
type: Number,
required: true
},
motivo: {
type: String,
required: true
},
fecha: {
type: Date,
required: true
},
equipo: {
type: Number,
required: true
},
rutm: {
type: String,
required: true
}
});
const Cita = mongoose.model('Cita', cita);
module.exports = Cita;
The routes file is as follows:
const express = require('express');
const router = express.Router();
const citaup = require('../Controllers/citaupdate');
// Ruta para crear una nueva persona
router.put('/:id', citaup.actualizarCita);
module.exports = router;
While the server file that uses said path is the following:
const express = require("express");
const bodyParser = require('body-parser');
const cors = require("cors");
const morgan = require("morgan");
const db = require("./Database");
const app = express();
app.set("port", process.env.PORT || 5000);
// Rutas
const p = require('./Routes/NuevaPersona');
const veru = require('./Routes/veruser');
const nusuario = require('./Routes/NuevoUsuario');
const citaf = require('./Routes/citafind');
const citau = require('./Routes/citaup');
const citac = require('./Routes/citacreate');
app.use((req, res, next) => {
console.log('Solicitud recibida:', req.method, req.url);
console.log('Cuerpo de la solicitud:', req.body);
next();
});
// Middlewares
app.use(bodyParser.json());
app.use(morgan("dev"));
app.use(cors());
app.use('/NPersona', p);
app.use('/Veruser', veru);
app.use('/NUsuario', nusuario);
app.use('/Citaf', citaf);
app.use('/Citac', citac);
// Actualiza tu ruta para incluir un parámetro ":id"
app.put('/Citaup/:id', citau);
db();
app.listen(app.get("port"), () => {
console.log(`Servidor está corriendo en el puerto: ${app.get("port")}`);
});
module.exports = app;
Finally, the front that makes the request is the following:
const modificarCita = async (id, nuevaFecha, nuevaHora, nuevoRut, nuevoExamen, nuevoMotivo, nuevoIdMedico, nuevoEquipo, rut) => {
try {
const nuevaFechaHora = new Date(`${nuevaFecha}T${nuevaHora}`);
const url = `http://localhost:5000/Citaup/${id}`; // Agregar el id a la URL
const response = await fetch(url, {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
fecha: nuevaFechaHora,
nuevoRut: nuevoRut,
nuevoExamen: nuevoExamen,
nuevoMotivo: nuevoMotivo,
nuevoIdMedico: nuevoIdMedico,
nuevoEquipo: nuevoEquipo,
nuevoRutm: rut,
}),
});
if (!response.ok) {
throw new Error(`Error al actualizar la cita: ${response.statusText}`);
}
const citaActualizada = await response.json();
console.log('Cita actualizada:', citaActualizada);
alert("Modificación realizada exitosamente.");
} catch (error) {
console.error('Error:', error.message);
}
};
I would like to see if someone could help me, since I am new to doing this. Thank you in advance.
The problem has already been resolved, it was an error that was generated when using the dates and converting them.