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

8

我该如何在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);

在服务器的get回调函数中,我试图使用

req.session.test = 'hello';

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

可能需要更多的东西来存储会话值,如何实现?是否有比connect-mongo更好的文档化模块?


只要你知道,require('connect-mongo')将会把会话信息存储为字符串。https://github.com/kcbanner/connect-mongo/issues/10 - fullstacklife
2个回答

4

16
这是一份相当长的文章清单,更直接的链接是:http://dailyjs.com/2010/12/06/node-tutorial-5/。 - Jim T

1

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

您可以在这里查看我的源代码,这是一个简单的URL缩短器(目前实际上使URL变得相当长 - 这只是一个练习;))。我使用会话来存储当前用户缩短的URL列表。

虽然不太美观,但我知道它能正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接