如何使用Node.js和mongodb存储会话值?

时间:2011-03-19 19:09:01

标签: javascript session mongodb node.js

如何使用Node.js,express@2.0.0和mongodb进行会话?我现在正试图像这样使用connect-mongo:

var config = require('../config'),
    express = require('express'),
    MongoStore = require('connect-mongo'),
    server = express.createServer();

server.configure(function() {
    server.use(express.logger());
    server.use(express.methodOverride());
    server.use(express.static(config.staticPath));
    server.use(express.bodyParser());
    server.use(express.cookieParser());
    server.use(express.session({
        store: new MongoStore({
            db: config.db
        }),
        secret: config.salt
    }));
});

server.configure('development', function() {
    server.use(express.errorHandler({
        dumpExceptions: true,
        showStack: true
    }));
});

server.configure('production', function() {
    server.use(express.errorHandler());
});

server.set('views', __dirname + '/../views');
server.set('view engine', 'jade');

server.listen(config.port);

然后,我在一个server.get回调试图使用

req.session.test = 'hello';

将该值存储在会话中,但不存储在请求之间。

它可能需要更多的东西来存储会话值,怎么样?是否有比connect-mongo更好的文档化模块?

2 个答案:

答案 0 :(得分:4)

看看DailyJS的这个系列。它使用MongoDB和会话管理

http://dailyjs.com/tags.html#lmawa

答案 1 :(得分:2)

我对Node.js或Express没有经验,所以我无法立即看到你的方法出了什么问题。但是,我已经让Express使用MongoDB来存储flash消息和其他会话内容的会话。

您可以看到我的简短网址缩短程序here的源代码(这实际上使得网址目前很长 - 这只是一个练习;))。我使用会话来存储当前用户缩短的URL列表。

它不漂亮,但我知道它有效。