最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

PUT请求出现问题,无法使用MongoDB,Node和Express更新条目

运维笔记admin18浏览0评论

PUT请求出现问题,无法使用MongoDB,Node和Express更新条目

PUT请求出现问题,无法使用MongoDB,Node和Express更新条目

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

我一直在参考该项目的教程,但是在该教程中,创建配置文件路由也更新了配置文件,因为它引用了已登录用户的ID。

当我用邮递员进行测试时,我在要更新的患者的URL中发送Patient_id,并且它在数据库中发回了另一位患者的信息。

如何修改放置请求以更新患者信息?

谢谢!

回答如下:

您要么找不到病人,要么更新错误。尝试对更新功能执行.then和.catch,然后查看是否抛出任何错误。

发布评论

评论列表(0)

  1. 暂无评论