我有一个代码,可以使用multer在nodejs中上载带有某些字段名称和单个图像的表单。在POST
请求中上传新文件时,一切正常。同样,用于更改图像的PATCH请求也可以正常工作。但是,问题在于,如果我只需要更改图像而不是service_name
,它将使该字段无效,而不是保留创建新POST时提供的先前名称。
补丁请求
exports.editService = async (req, res) => {
const { id } = req.params;
const { service_name } = req.body;
const updates = {};
if (req.body) {
updates.service_name = service_name;
}
if (req.file) {
const service_pic = req.file.filename;
updates.service_pic = service_pic;
}
try {
const updated_data = await Services.findOneAndUpdate({ _id: id }, {
$set: updates
},
{
new: true
}
);
if (!updated_data) {
res.status(404).json({ message: "Data does not exist" });
return;
}
res.status(200).json({ message: "Data updated", result: updated_data });
} catch (error) {
res.status(500).json({ message: "Internal server error", error });
}
}
在PATCH / PUT请求中,service_name
始终为null
。
邮递员结果:
{
"message": "Data updated",
"result": {
"_id": "5f3648f8aefb2978e8f82d94",
"service_name": null,
"service_pic": "service_pic-1597396108999TIME-CLOCK-service.png",
"createdAt": "2020-08-14T08:19:04.013Z",
"updatedAt": "2020-08-14T09:08:29.012Z",
"__v": 0
}
}
不确定我在哪里处理错误。感谢您为纠正此问题提供的任何帮助。