【问题标题】:Issue with Express sessions and fs moduleExpress 会话和 fs 模块的问题
【发布时间】:2012-12-09 11:18:07
【问题描述】:
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 会话?

【问题讨论】:

    标签: node.js session express mkdir fs


    【解决方案1】:

    不确定它是如何引起您的症状的,但这条线:

    req.session.user = new.user;
    

    应该是:

    req.session.user = newu.user;
    

    更新

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

    【讨论】:

    • 真的!但它仍然无法正常工作。我要试试 Connect,我想它在会话中的效果比 Express 更好。
    • @user1913693 Express 使用 Connect 进行会话,所以我认为您不会看到太大的不同!我看到的另一个问题是,在调用 fs.mkdir 回调之前,您可能不应该重定向到 /home
    • 这就是我想要的,但是,我启动了这个app.js,当执行fs.mkdir时,nodemon sais“由于更改而重新启动”,也许是这个问题,fs.mkdir重新启动了节点.js 服务器,所以当这种情况发生时,我会丢失当前会话。
    • @user1913693 啊,难怪。将您的会话放在像 Redis 这样的持久存储中,而不是默认的内存存储中。
    • 对不起,但我正在寻找一些 Redis 的 node.js 和保持会话的教程,但没有一个工作:S 你知道一个很好的教程,即使使用 fs 模块也可以在 node.js 中保持会话?
    猜你喜欢
    • 1970-01-01
    • 2021-10-07
    • 2011-12-31
    • 1970-01-01
    • 2020-11-25
    • 2021-02-05
    • 1970-01-01
    • 2011-08-31
    • 2017-02-20
    相关资源
    最近更新 更多