您好我想从我的API中删除 ASYNC OF HELL 。我遇到了一个npm包,即 async ,它提供了名为 async series 的选项。所以我在我的API中尝试了它,我正在制作一个普通的Register表单,它从用户获取电子邮件,firstName,LastName和密码,并使用节点检查器插入断点以查看其工作情况。我使用DHC发布了我的数据。我的API无法提供所需的输出,也没有发布错误。我的代码如下
function email_verification(callback) {
User.find(email, function (err, data) {
if (err) {
callback(err);
}
});
}
function hashing_password(callback) {
bcrypt.genSalt(SALT_WORK_FACTOR, function (err, salt) {
if (err) {
callback(err);
}
bcrypt.hash(password, salt, function (err, hash) {
if (err) {
callback(err);
}
});
});
}
function saving_user(callback) {
password = hash;
delete param.password;
param.password = password;
var user_details = db.User(param);
user_details.save(param, function (err, data) {
if (err) {
callback(err);
} else {
delete data._doc.password;
return res.json({
success: true,
user_details: data
});
}
});
}
async.series([
email_verification,
hashing_password,
saving_user
], function (err) {
if (err.name != null) {
if (err.name === "ValidationError") {
return res.json({
success: false,
exception: "ERROR.USER.ALREADY.EXISTS"
});
} else if (err) {
return res.json({
success: false,
exception: err
});
} else {
return res.json({
success: true,
details: err
});
}
}
});
我的API流程如下:
有人可以告诉我我在哪里弄错了吗?
答案 0 :(得分:2)
您也需要在成功案例中调用函数callback
(不仅仅是错误案例)。
例如:
function email_verification(callback) {
User.find(email, function (err, data) {
if (err) {
callback(err);
} else {
callback(err, data);
}
});
}
您可以简化为:
function email_verification(callback) {
User.find(email, callback);
}