使用asyc.waterfall流控制库的nodeJs和express.js挂起请求

时间:2013-11-18 18:55:59

标签: javascript node.js express

我的帖子请求在谷歌浏览器网络检查中待定,但我已调用res.send()在async.waterfall()函数中释放帖子请求以结束帖子请求?任何提示如何实现这一目标?

这是我的register.js文件的代码

exports.createUser = function(req,res){
    var email1 = req.body.mail.toString();
    var password = req.body.password.toString();
      async.waterfall([


    function(callback){
        // verify user in the db
        User.find({email:email1},function(err,data){
            if (err){
                res.send(404);
                return callback(err);

            }


            // user is found
            if (data.length != 0){
                res.send(404);
                return callback(new Error("User Found"));

            }



            callback();

        });
    },


    // generate salt password
    function(callback) {
        bcrypt.genSalt(SALT_WORK_FACTOR,function(err,salt){
           if (err) return  callback(err);

            bcrypt.hash(password,salt,function(err,hash){
                if (err) return callback(err);

                return callback(null,hash);


            });

        });
    },

    //generate random string
    function(hash,callback){
        crypto.randomBytes(48,function(err,buf){

            if (err) return callback(err);
            var randomString   = buf.toString('hex');

            return callback(null,hash,randomString);

        });
    },

    // save them in the mongoDb using mongoose
    function(hash,randomString,callback){

        userModel.email = email1;
        userModel.password = hash;
        userModel.verificationId = randomString

        userModel.save();

        callback(null,'done');

    }
],function(err){
    if (err){
        console.log(err);
        res.send(404);
    } else{
        console.log("done");
        res.send("200");
    }
});

}

这是我的app.js代码

 // render the registration page
 app.get('/users/create',register.renderUserPage);


 app.post('/users/create',function(req,res){
     register.createUser(req,res);

 });

0 个答案:

没有答案