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.
2
Answers
The problem has already been resolved, it was an error that was generated when using the dates and converting them.
maybe your request body is undefined, if it is you can try to use body parser to be able to read data from body
app.use(bodyParser.json())
.Express documentation
Hope it helps