如何在node.js中使用mongodb创建会话

时间:2013-05-23 10:18:49

标签: node.js mongodb session

我正在尝试在node.js中创建与mongodb的会话 我已经有了这样的连接

var Db=require('mongodb').Db;


var BSON=require('mongodb').BSONPure;

var Server=require('mongodb').Server;


 var client=new Db('db',new Server('localhost', 27017), {safe:false});

然后我尝试配置这样的会话

 app.use(express.session({

   store: new mongoStore({ db: client }),
    secret: 'topsecret'

   }));

我运行了server.js文件我得到了这个错误mongoStore undefined 所以为了解决这个错误我添加了这个

  var mongoStore= require('connect-mongodb');

我再次运行它我没有得到任何错误但是当我试图找到或保存数据到db时我得到了以下错误

    Cannot call method 'findOne' of undefined

如何解决此问题以及如何在node.js中使用mongodb创建会话

1 个答案:

答案 0 :(得分:3)

这是一个非常简单的设置:

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

app.use(express.cookieParser()); // required to handle session cookies!
app.use(express.session({
  secret  : 'YOUR_SESSION_SECRET',
  cookie  : {
    maxAge  : 10000              // expire the session(-cookie) after 10 seconds
  },
  store   : new MongoStore({
    db: 'sessionstore'
    // see https://github.com/kcbanner/connect-mongo#options for more options
  })
}));

app.get('/', function(req, res) {
  var previous      = req.session.value || 0;
  req.session.value = previous + 1;
  res.send('<h1>Previous value: ' + previous + '</h1>');
});

app.listen(3012);

如果您运行它并在浏览器中打开http://localhost:3012/,则每次重新加载时它会将值增加1。 10秒后,会话将过期,值将重置为0.