我正在学习如何使用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);
}
};
型
我想看看是否有人可以帮助我,因为我是新来做这件事。提前谢谢你。
1条答案
按热度按时间wfypjpf41#
也许你的请求体是未定义的,如果是这样,你可以尝试使用体解析器来从体
app.use(bodyParser.json())
中读取数据。Express文档希望它能帮助