为什么当我打它从邮递员下面的函数被卡住?
我试图更新的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
将是一个不错的主意一切。
为什么当我打它从邮递员下面的函数被卡住?
我试图更新的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
将是一个不错的主意一切。