1

我有一个代码可以使用 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
    }
}

不知道我在哪里处理错了。任何纠正此问题的帮助表示赞赏。

4

0 回答 0