为啥当我从邮递员那里点击以下功能时,它会卡住?

Posted

技术标签:

【中文标题】为啥当我从邮递员那里点击以下功能时,它会卡住?【英文标题】:Why does the following function gets stuck when I hit it from postman?为什么当我从邮递员那里点击以下功能时,它会卡住? 【发布时间】:2019-07-04 22:26:53 【问题描述】:

我正在尝试在以下函数中更新 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
                        );
                    
                );
            
        
    );
,

【问题讨论】:

【参考方案1】:

基本上,您的代码看起来不错(我只阅读过,没有测试过!)。但是可能会出现问题,例如同步抛出异常。例如,这可能发生在对fs.unlinkSync 的调用中(请注意,我并不是说问题出在这一行,这只是一个示例)。

如果发生这种情况,则该路由的进一步执行将停止,您将永远不会收到结果。同样的情况也可能发生在其他地方,所以在所有导致发送500 的内容周围加上try/catch 可能是个好主意。

【讨论】:

以上是关于为啥当我从邮递员那里点击以下功能时,它会卡住?的主要内容,如果未能解决你的问题,请参考以下文章

axios在20秒内给出响应,但具有相同请求有效载荷的相同api在6秒内从邮递员那里得到响应

当我从 SQL Server 代理运行 Python 脚本时,为啥它会失败?

为啥当我从express发送一个简单的文件时,客户端会消耗大量内存?

下拉菜单打不开

为啥点击路线时会修改道具?

为啥当我点击文本字段时工具栏不显示?