skip to Main Content

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


  1. Chosen as BEST ANSWER

    The problem has already been resolved, it was an error that was generated when using the dates and converting them.


  2. 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

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search