在connect-mongodb模块中,我们可以在MongoDB中存储会话,如下所示:
var connect = require('connect')
, Db = require('mongodb').Db
, Server = require('mongodb').Server
, server_config = new Server('localhost', 27017, {auto_reconnect: true, native_parser: true})
, db = new Db('test', server_config, {})
, mongoStore = require('connect-mongodb');
connect.createServer(
connect.bodyParser(),
connect.cookieParser(),
connect.session({
cookie: {maxAge: 60000 * 20} // 20 minutes
, secret: 'foo'
, store: new mongoStore({db: db})
})
);
在上面的例子中,我们必须使用本机mongodb的东西。在我的nodejs项目中我使用mongoose 2.4.1,那么应该如何重写该代码以使用mongoose?
谢谢!
答案 0 :(得分:1)
如果您使用的是mongoose且使用了mongoose.connect,则可以在
处获取连接mongoose.connection
因此,要配置会话存储,您可以使用此表单
var mongoose = require('mongoose'),
mongoStore = require('connect-mongodb');
...
mongoose.connect(host,databaseName,port);
// mongoose.connect('mongodb://host:port/databaseName');
...
connect.session({
secret: 'your secret key',
cookie: { maxAge : 60*15*1000}, // 15 minutes, in milliseconds
store: new mongoStore( { db : mongoose.connection.db })
})
答案 1 :(得分:0)
你没有理由这样做,只需使用connect-mongodb的会话,它实现了所有'Session Store'Express功能。将Mongoose用于需要数据库存储的所有其他内容,但保留connect-mongodb的会话。
这是一个真实的例子:https://github.com/alexyoung/nodepad
答案 2 :(得分:0)
Mongoose应该以某种方式暴露连接。
答案 3 :(得分:0)
如果你使用connect-mongo
,请传递你的mongoose连接:
var express = require('express');
var MongoStore = require('connect-mongo')(express);
new MongoStore({ mongoose_connection: mongoose.connection })
一切都会按照您的预期发挥作用。