我使用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:删除了错误复制的部分代码
答案 0 :(得分:0)
问题出在一个schema.post('save')
仅以func功能测试我结束的代码
let odg = new Var(req.body.obj);
odg.save( );
res.status(200).json({ok:'ok'});
并且仍然存在相同的问题。
所以我查看了Schema文件,并尝试部分注释,并以出现问题的一行结尾。
希望我可以帮助遇到相同问题的其他人