后端代码
exports.updateProfile = catchAsyncErrors(async (req, res, next) => {
const newUserData = {
name: req.body.name,
email: req.body.email,
};
// clodunary
if (req.body.avatar !== "") {
const user = await User.findById(req.user.id);
const imageId = user.avatar.public_id;
await cloudinary.v2.uploader.destroy(imageId);
const myCloud = await cloudinary.v2.uploader.upload(req.body.avatar, {
folder: "avatars",
width: 150,
crop: "scale",
});
newUserData.avatar = {
public_id: myCloud.public_id,
url: myCloud.secure_url,
};
}
const user = await User.findByIdAndUpdate(req.user.id, newUserData, {
new: true,
runValidators: true,
useFindAndModify: false
})
res.status(200).json({
success: true
})
});
我遇到了同样的问题,如果给出了姓名或电子邮件以及 cloudinary,那么它将更新两者(或者如果所有三个都给出,那么它会正常工作),但是当只更新姓名或电子邮件或两者都没有 cloudinary 时,那么它将显示内部服务器错误。请建议解决方案,尝试使用 if(req.body.avatar!== "" && req.body.avatar !== undefined) 但仍然显示相同的内部服务器错误。