无法理解 ASYNC npm 包中的 ASYNC 系列

Posted

技术标签:

【中文标题】无法理解 ASYNC npm 包中的 ASYNC 系列【英文标题】:Unable to understand ASYNC series in ASYNC npm package 【发布时间】:2015-10-09 03:24:48 【问题描述】:

您好,我想从我的 API 中删除 ASYNC OF HELL。我遇到了一个名为 async 的 npm 包,它提供了名为 async series 的选项。所以我在我的 API 中尝试了它,我正在制作一个普通的注册表单,该表单从用户那里获取电子邮件、名字、姓氏和密码,并使用节点检查器插入断点以查看其工作情况。我使用 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 流程如下:

    我检查 电子邮件 ID 是否存在。如果它存在,那么我给 错误,说明电子邮件 ID 存在。 如果电子邮件 ID不存在,那么我散列 给定的密码存储电子邮件、名字、 mongoDB 中的姓氏和哈希密码。

谁能告诉我我在哪里犯了错误?

【问题讨论】:

嘿,约翰尼,它成功了!!!!你可以发布这个问题的答案,以便我将来参考!提前致谢 查看此链接以获得更好的理解...***.com/questions/17181248/… 【参考方案1】:

在成功案例(不仅仅是错误案例)中,您还需要在函数中调用 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);

【讨论】:

以上是关于无法理解 ASYNC npm 包中的 ASYNC 系列的主要内容,如果未能解决你的问题,请参考以下文章

理解ES7中的async/await

JS中的async/await的用法和理解

理解 Node JS 中的 async/await

理解 C# 5 async/await 中的上下文

很难理解节点中的 async.parallel

理解 JavaScript 的 async/await