express - 当我的猫鼬查询方法中抛出哪个错误时
问题描述
我正在学习一门课程,其中讲师更新了一个看起来像这样的猫鼬文档
.put(authenticate.verifyUser, (req, res, next) => {
User.findById(req.params.userId) //get the user
.then(
(user) => {
if (user != null && user.comments.id(req.params.commentId) != null) {
//update the comment
user.save().then(
(user) => {
User.findById(user._id)
.then((user) => {
//response logic
});
},
(err) => next(err) //(1) Is this error occur when the .save() throw any error?
);
} else if (user == null) {
//handle error
return next(err);
} else {
//handle error
return next(err);
}
},
(err) => next(err) //(2) When this error occur?
)
.catch((err) => next(err));
})
但是我很难理解(err) => next(err)
. 谁能解释一下?
解决方案
像这样重新排列你的代码,
.put(authenticate.verifyUser, (req, res, next) => {
User.findById(req.params.userId)
.then(
(err,user) => {
if(err) next(err)
if (user != null && user.comments.id(req.params.commentId) != null) {
//update the comment
user.save().then(
(err,user) => {
if(err) next(err)
else {
User.findById(user._id)
.then((user) => {
//response logic
});
}
}
);
} else if (user == null) {
//handle error
return next(err);
} else {
//handle error
return next(err);
}
}
)
.catch((err) => next(err));
})
当错误增加时,这将更有意义。您可以按照此答案了解更多详细信息。
推荐阅读
- javascript - 类型推断有多可靠?
- mysql - 在 Node JS 中具有动态输入值和多个 WHERE 条件的 SQL 更新查询
- android - Android Room Dao:按 CASE 排序不起作用
- javascript - 如何将对象数组过滤到js中的另一个对象数组?
- sql - 我怎样才能只为第一个条目显示“老板”?
- python - 使用 Matplotlib 将具有不同轴的两个图合二为一
- javascript - 多形零件类型在 Angular 中不起作用
- android - 如何通过 Flutter 保护存储在 iOS 和 Android 中的数据?
- java - java - 如何让一个类在java中进行数学运算?
- python - 熊猫:用逗号分割列后重复的列号