Node.js程序显示图片上传错误



我在数据库中保存了一个标题、描述、解决方案和一张照片。除了照片,其他都是必需的。我试图使图像上传工作,但我无法把照片的路径在邮差,因为如果我做的东西像C:UsersmeDesktop它会导致一个错误。代码是否有问题,或者有其他方法可以解决这个问题?

router.post('/problem', catchAsync (async (req, res) => {
const { title, description, solution, photo } = req.body;
let uploadPath;
// // 1) Check if title, description and solution exist
if (!title || !description || !solution) {

res.json({
status: "FAILED",
message: "Please provide a title, description and solution!"
})
console.log("Success!");

}
photo = req.files.photo;
uploadPath = __dirname + '/uploads' + photo.name;
sampleFile.mv(uploadPath, function(err) {
if (err) {
return res.status(500).send(err);
}
res.send('File uploaded to ' + uploadPath);
});

//Save it in the database     
const newProblem = new Problem({
title,
description,
solution,
photo
});
console.log(newProblem);
newProblem.save().then(result => {
res.json({
status: "SUCCESS",
message: "Success",
data: result
})
})
.catch(err => {
console.log(err);
res.json({
status: "FAILED",
message: "Error",
data: result,
})
})
我得到的错误是:

错误:发送到客户端后无法设置报头

我认为问题是源于这部分代码

sampleFile.mv(uploadPath, function(err) {
if (err) {
return res.status(500).send(err);
}
res.send('File uploaded to ' + uploadPath);
});

如果文件上传成功,则向客户端发送响应,但是该函数仍然有更多的操作,其中您将尝试向客户端发送更多响应。如果成功上传需要以下代码,则不应立即发送响应,而应使用布尔标志,并在其他所有内容完成后检查此标记,然后才应将响应发送给客户端。