2012-12-22 60 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