我正在尝试通过以下功能更新MongoDB中的记录,但有时当我从邮递员到达终点时卡住了,不知道为什么会发生?帮我在这里找出问题
update: (req, res) => {
let id = req.params.id;
let image = req.file.path;
let newPost = {
title: req.body.title,
slug: req.body.slug,
body: req.body.body,
image: image
};
Post.findOne({_id: id}, (err, post) => {
if(err)
{
return res.status(403).json({
errors: err.errors
});
}
else
{
if(!post)
{
res.status(404).json({
message: "Post not found"
});
}
else
{
let oldImage = post.image;
Post.updateOne({_id: id}, newPost, (err, post) => {
if(err)
{
return res.status(403).json({
errors: err.errors
});
}
else
{
if(oldImage)
fs.unlinkSync(oldImage);
return res.status(200).json({
post
});
}
});
}
}
});
},
最佳答案
基本上,您的代码看起来不错(我只看过它,未测试过!)。但是当例如同步引发异常。例如,在调用fs.unlinkSync
时可能会发生这种情况(请注意,我并不是说这一行存在问题,这只是一个示例)。
如果发生这种情况,则该路由的进一步执行将停止,并且您将永远不会收到结果。在其他地方也可能发生同样的情况,因此在所有导致发送try
的内容周围使用catch
/ 500
可能是一个好主意。