javascript 使用node.js和mongodb提交请求

roejwanj  于 12个月前  发布在  Java
关注(0)|答案(1)|浏览(99)

我正在学习如何使用node.js发出请求。我的问题是,它在发出请求时生成这些错误(Cannot GET /Citaup/654 fe 24584 f7 a3 d27 e0 a4 c61)无法加载资源:服务器响应状态为404(Not Found)Registro.js:146错误:Error al actualizar la cita:Not Found modificarCita @ Registro.js:146,我有此请求结构如下:
执行更新的驱动程序如下:

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' });
  }
};

字符串
模型如下:

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;


路由文件如下所示:

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;


而使用上述路径的服务器文件如下:

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;


最后,提出请求的前端如下:

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);
  }
};


我想看看是否有人可以帮助我,因为我是新来做这件事。提前谢谢你。

wfypjpf4

wfypjpf41#

也许你的请求体是未定义的,如果是这样,你可以尝试使用体解析器来从体app.use(bodyParser.json())中读取数据。Express文档
希望它能帮助

相关问题