节点异步不执行db函数

时间:2013-11-19 04:32:23

标签: node.js express async.js

我正在从表单发送一个帖子请求,但是async.waterfall()没有执行mongoose的User.find()函数来从数据库中获取用户,因此post请求在网络检查器中的状态正在等待处理因为没有调用res.send()。

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){
      var userModel = new User;
      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);

});

这是使用mongoose

连接到mongoDb的Db.js文件
  console.log("connection succeeded");

  var UserSchema = new Schema ({
  email: {type:String ,require : true ,index : {unique : true}}  ,
  password:{ type : String ,required: true}  ,
  verificationId:{type:String, required:true,index:true}
 });

 UserSchema.plugin(ttl,{ttl:90000000});


 module.exports = mongoose.model('User',UserSchema);

0 个答案:

没有答案