调用fs.mkdir时无法分配req.session.user

时间:2012-12-23 12:26:58

标签: node.js session express

这是app.post的代码,它通过我所做的函数fs.mkdir调用newdir

app.post('/register', express.bodyParser(), function (req, res, next){

 var newu = new UserModel({});

 newu.user = req.body.nuser;
 newu.pass = req.body.npass;
 newu.mail = req.body.nmail;


 UserModel.find({ user: req.body.user }, function (err, user){

    if (user.lenght == 1) {

        res.redirect('/');

    }

    else {    

    newdir(req.body.nuser);   

    next()   

    if (err) throw err;

          newu.save(function (err, newu){

               req.session.user = newu.user;  
               res.redirect('/home')


           });

     }

  });

});

这是newdir的代码:

function newdir (username){

    var pathu = __dirname + '/users/' + username;

    fs.mkdir(pathu, function (err){

       if (err) throw err;

    });
}

这是/home的代码:

app.get('/home', function (req, res){

  console.log(req.session.user);

  res.send('Welcome ' + req.session.user + '!');

});

我可以在我想要的所有app.post/get中分配一个req.session.user,例如当我用这个验证用户时,我可以正确分配req.session.user:

app.post('/verify', express.bodyParser(), function (req, res){

  UserModel.find({ user: req.body.user }, function (err, user){

    if (user[0] == undefined) {

         res.redirect('/');

    }

     else{

       if (user[0].pass == req.body.pass) {

         req.session.user = user[0].user;
         res.redirect('/home');

       }

       else{

         res.redirect('/');

       }

   }

  if (err) throw err;

  });

});

但是当我尝试在同一个app.post中分配req.session.user时,它被称为fs.mkdir,总是req.session.user未定义。也许我应该创建一个模块来进行fs.mkdir调用?我不知道该怎么做!

1 个答案:

答案 0 :(得分:0)

在其他模块中调用fs.mkdir时问题得以解决,非常简单:D