Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 为什么当我从postman处点击以下函数时,它会被卡住?_Node.js_Mongodb_Express_Mongoose_Postman - Fatal编程技术网

Node.js 为什么当我从postman处点击以下函数时,它会被卡住?

Node.js 为什么当我从postman处点击以下函数时,它会被卡住?,node.js,mongodb,express,mongoose,postman,Node.js,Mongodb,Express,Mongoose,Postman,我试图在下面的函数中更新MongoDB中的一条记录,但有时当我从邮递员处到达端点时,它会被卡住,我不知道为什么会发生这种情况?帮我找出这里的问题 update: (req, res) => { let id = req.params.id; let image = req.file.path; let newPost = { title: req.body.title, slug: req.body.slug, bod

我试图在下面的函数中更新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
时可能会发生这种情况(请注意,我并不是说这行中存在问题,这只是一个示例)

如果发生这种情况,则此路由的进一步执行将停止,并且您将永远不会收到结果。同样的情况也可能发生在其他地方,因此,在所有导致发送
500
的地方进行
尝试
/
捕获
可能是个好主意