特定路由调用后节点冻结

时间:2018-09-11 07:42:08

标签: express mongoose

我使用node作为我的REST API有点,现在我被这个简单的功能所困扰

我想要的是:保存新记录newM并保存,保存后检查year集合是否包含年份,如果不保存,则保存新记录。

这是处于测试/调试模式的路由

router.post('/addnew', (req, res, next) => {
    let newM = new Var(req.body.obj);
    newM.save(function (err) {
        if (err) return console.log(1, err); // TODO test
        const newObjYear = new Date(req.body.obj.date).getFullYear();
        console.log(newObjYear); // TODO test
        NewsYear.findOne({year: newObjYear}, (err, year) => {
            if (err) return console.log(2, err); // TODO test
            if (!year) {
                const newYearM = new NewsYear({
                    year: newObjYear
                });
                newYearM.save( err => {if (err) return console.log(3, err);});
                console.log('save'); // TODO test
            }
            if (year) {
                console.log('year'); // TODO test
            }
            console.log('last'); // TODO test
            res.status(200).json({ok:'ok'});
            next(); // TODO test
        });
    });
});

这是控制台

2021
save
last
POST /api-admin-news/addnew 200 30.853 ms - 11

像它想的那样,但是在此节点没有响应并且停止后基于CPU使用率下降之后,Node处于某种无限循环中。 其他路由,即使在具有相同代码的findByIdAndUpdate这样的路由模型中也可以正常工作。 我最近切换到了WebStorm,并且在调试模式下(不是专家)没有发现任何不同

node -v : v10.10.0
"mongoose": "^5.1.1",
"express": "~4.16.0",

现在在Windows上工作,在ubuntu上使用pm2和nginx进行了测试,结果相同。

抱歉英语:D

谢谢 EDIT1:删除了错误复制的部分代码

1 个答案:

答案 0 :(得分:0)

问题出在一个schema.post('save')

仅以func功能测试我结束的代码

let odg = new Var(req.body.obj);
odg.save( );
res.status(200).json({ok:'ok'});

并且仍然存在相同的问题。

所以我查看了Schema文件,并尝试部分注释,并以出现问题的一行结尾。

希望我可以帮助遇到相同问题的其他人