Express会话和fs模块的问题

时间:2012-12-21 21:39:15

标签: node.js session express mkdir fs

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

   var newu = new UserModel({});

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

   var pathu = __dirname + '/users/' + req.body.nuser;

   newu.save(function (err, newu){

       req.session.user = new.user;

       if(err) throw err;

       fs.mkdir(pathu, function (err){

           if (err) throw err;

        });    

   });

   res.redirect('/home);

});

总是在执行fs.mkdir时,我丢失了所有当前的Express会话,有没有办法执行fs.mkdir并保留所有Express会话?

1 个答案:

答案 0 :(得分:0)

不确定它是如何导致你的症状,但这一行:

req.session.user = new.user;

应该是:

req.session.user = newu.user;

<强>更新

问题的根源在于创建目录会触发nodemon重新启动应用程序,并且默认的内存中会话存储会在发生这种情况时丢失所有会话。修复方法是通过Redis使用connect-redis等持久会话存储。