Используя стек MERN и не может получить запрос PUT, чтобы в этом случае обновить информацию о пациенте.
Маршруты пациента - Patient.js
//@route POST api/patients
//@desc Create patient profile
//@access Private, patient information
router.post('/', [ auth,
check('firstName', 'First Name is required')
.not()
.isEmpty(),
check('lastName', 'Last name is required')
.not()
.isEmpty(),
check('medicalConditions', 'Medical Conditions are required')
.not()
.isEmpty()
],
async (req, res) => {
const errors = validationResult(req);
if(!errors.isEmpty()) {
return res.status(400).json({ errors: errors.array() });
}
const {
firstName,
lastName,
dateOfBirth,
phoneNumber,
email,
medicalConditions
} = req.body
//Build patient object
const patientFields = {}
if(firstName) patientFields.firstName = firstName;
if(lastName) patientFields.lastName = lastName;
if(dateOfBirth) patientFields.dateOfBirth = dateOfBirth;
if(phoneNumber) patientFields.phoneNumber = phoneNumber;
if(email) patientFields.email = email;
if(medicalConditions) {
patientFields.medicalConditions = medicalConditions.split(',').map(medicalCondition => medicalCondition.trim());
}
try {
patient = new Patient(patientFields);
await patient.save();
res.json(patient)
}
catch (err) {
console.error(err.message);
res.status(500).send('Server Error in Create/Update Patient');
}
}
);
//@route GET api/patients/:patient_id
//@desc Get patient by ID
//@access Private, patient information
router.get('/:patient_id', auth, async (req, res) => {
try {
const patient = await Patient.findById(req.params.patient_id);
if(!patient) {
return res.status(400).json({ msg: "This patient does not exist." });
}
res.json(patient)
}
catch (err) {
console.error(err.message);
if(err.kind == 'ObjectId') {
return res.status(400).json({ msg: 'Patient not found' })
}
res.json(500).send({ msg: 'Server Error in get patient by user ID' })
}
});
//@route PUT api/patients/:patient_id
//@desc Update patient information
//@access Private, patient information
router.put('/:patient_id', async (req,res) => {
try {
let patient = await Patient.findById(req.params.patient_id);
if(patient) {
patient = await Patient.findOneAndUpdate(req.params.patient_id,
{
firstName: req.body.firstName,
lastName: req.body.lastName,
dateOfBirth: req.body.dateOfBirth,
phoneNumber: req.body.phoneNumber,
email: req.body.email,
medicalConditions: req.body.medicalConditions
}
);
}
return res.json(patient);
}
catch (err) {
console.error(err.message);
res.status(500).send('Server Error in update patient info')
}
});
Я ссылалсяучебник для этого проекта, но в учебнике маршрут создания профиля также обновил профиль, потому что он ссылался на идентификатор вошедшего в систему пользователя.
Когда я проверяю это с почтальоном, я отправляю в Patient_id вURL-адрес пациента, который я хочу обновить, и он отправляет обратно информацию о другом пациенте в БД.
Как изменить запрос на ввод данных для обновления информации о пациенте?
Спасибо!