2012-12-22 58 views
2

我目前正在开发一个web应用,每次调用fs.mkdir时都会调用这个web应用,删除所有当前的express会话,所以我需要一种方法来保留所有这些会话。我试图用connect-mongodb和connect-redis保留所有这些会话,但都不起作用,nodemon总是说req.session是未定义的。我不知道我必须做些什么来保持整个会议。交易并保留node.js/express会话

我需要一种方法来保持所有的会话,不要失去它们,当执行fs.mkdir时,还有一个教程,因为我没有找到任何好的和完整的教程,但任何人都可以工作!我在这里阅读所有与此相关的,Stackoverflow,但任何工作!请帮忙!

回答

1

这听起来很奇特,之后fs.mkdir你的会话被删除。 (我发现你的其他问题)

但回到问题,这里有一些代码片断,你可以如何使用会话(redis)。

var express = require('express') 
    , fs = require('fs') 
    , http = require('http') 
    , RedisStore = require('connect-redis')(express) 
    , sessionStore = new RedisStore() 
    , app = express() 
    ; 

app.configure(function(){ 
    app.set('port', 3000); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(express.cookieParser('secret')); 
    app.use(express.session({ 
    store: sessionStore 
    })); 
    app.use(express.static(__dirname + '/public')); 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
}); 

app.get('/', function(req, res){ 
    res.setHeader("Content-Type", "text/html"); 
    console.log(req.session); 
    console.log('------------------------'); 
    res.end('root'); 
}); 

app.get('/dir/:id', function(req, res){ 
    console.log(req.session); 
    console.log('------------------------'); 

    fs.mkdir(req.params.id); 
    if (req.session.dirs === undefined) 
    req.session.dirs = []; 
    req.session.dirs.push(req.params.id); 

    console.log(req.session); 
    console.log('------------------------'); 

    res.setHeader("Content-Type", "text/html"); 
    res.end('dir'); 
}); 


server = http.createServer(app).listen(3000); 

你应该阅读的express的文档,浏览快递

+0

examples现在,当'fs.mkdir'被称为在app.post,我不能指定一个新的req.session例如,用户,但我不会失去其他会话。我要试一试你的代码,谢谢! :D – MrMangado

+0

我刚试过,nodemon告诉req.session未定义 – MrMangado