Javascript 如何使用asyn重构nodejs代码并避免回调地狱
我对node比较陌生,并且正在尝试学习如何异步或承诺或任何使我的代码更好的方法。 下面是我的代码示例Javascript 如何使用asyn重构nodejs代码并避免回调地狱,javascript,node.js,mongodb,express,Javascript,Node.js,Mongodb,Express,我对node比较陌生,并且正在尝试学习如何异步或承诺或任何使我的代码更好的方法。 下面是我的代码示例 router.post('/delete', function (req, res) { var bus_id = req.body.selected[0]; Bus.remove({_id: bus_id}, function (err) { if (err) { res.json({status: "error"
router.post('/delete', function (req, res) {
var bus_id = req.body.selected[0];
Bus.remove({_id: bus_id}, function (err) {
if (err) {
res.json({status: "error", message: "please enter a valid bus_id"});
} else {
User.remove({refid:bus_id},function(err){
if (err) {
res.json({status: "error", message: "bus user wasn't deleted"});
return;
} else {
res.json({status: "success",message: "bus and bus user were deleted"});
}
});
}
});
});
我读过关于异步和承诺的书,什么是应用于我的代码的最佳方式?我个人会选择承诺。它可能看起来像这样
router.post('/delete', function (req, res) {
var bus_id = req.body.selected[0];
Bus.remove({_id: bus_id}).exec().then(function(bussRemoved) {
return User.remove({refid: bus_id}).exec();
}).then(function(userRemoved) {
res.json({status: "success",message: "bus and bus user were deleted"});
}).catch(function (err) {
res.json({status: "error", message: "please enter a valid bus_id"});
});
});
我个人会信守诺言。它可能看起来像这样
router.post('/delete', function (req, res) {
var bus_id = req.body.selected[0];
Bus.remove({_id: bus_id}).exec().then(function(bussRemoved) {
return User.remove({refid: bus_id}).exec();
}).then(function(userRemoved) {
res.json({status: "success",message: "bus and bus user were deleted"});
}).catch(function (err) {
res.json({status: "error", message: "please enter a valid bus_id"});
});
});