在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项目中,我使用猫鼬2.4.1,那么应该如何重写该代码以使用猫鼬呢?

谢谢!

===============>>#1 票数: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 })
})

===============>>#2 票数:0

如果您使用connect-mongo ,则通过如下方式传递您的猫鼬连接:

var express = require('express');
var MongoStore = require('connect-mongo')(express);

new MongoStore({ mongoose_connection: mongoose.connection })

一切都会如您所愿。

===============>>#3 票数:0

您没有理由这样做,只需使用具有connect-mongodb的会话即可,该会话已实现所有“会话存储” Express功能。 将Mongoose用于需要数据库存储的其他所有内容,但将会话保留为connect-mongodb。

这是一个执行此操作的真实示例: https : //github.com/alexyoung/nodepad

===============>>#4 票数:0

猫鼬应该以某种方式暴露连接。

  ask by Erik translate from so

未解决问题?本站智能推荐: