findByIdAndRemove不是函数错误及findByIdAndDelete崩溃问题求助
问题解决思路
1. findByIdAndRemove is not a function 报错原因
Mongoose 6.x及以上版本已移除findByIdAndRemove方法,官方推荐使用findByIdAndDelete替代,你替换方法的方向是正确的。
2. 替换后服务器崩溃的核心问题
你的代码catch块存在拼写错误:把error写成了errror(多了一个r),这会导致回调函数未定义,Promise抛出异常时无法被正确捕获,进而触发未处理错误导致服务器崩溃。
修复后的完整代码
router.delete('/:id', (req,res)=>{ Category.findByIdAndDelete(req.params.id).then(category=> { if(category){ return res.status(200).json({success: true, message: 'the category is deleted'}) } else{ return res.status(404).json({success: false , message: "category not found"}) } }).catch(err => { // 修正了errror的拼写错误 return res.status(400).json({success: false, error : err}) }) })
额外优化建议
推荐改用async/await写法,代码可读性更强,错误处理更直观:
router.delete('/:id', async (req,res)=>{ try { const category = await Category.findByIdAndDelete(req.params.id); if(category){ return res.status(200).json({success: true, message: 'the category is deleted'}); } else { return res.status(404).json({success: false , message: "category not found"}); } } catch(err) { return res.status(400).json({success: false, error : err}); } })
内容的提问来源于stack exchange,提问作者Mis
相关产品推荐
相关产品推荐

