connect-mongodb-session, 轻量级MongoDB支持用于连接和表达的会话存储

分享于 

6分钟阅读

GitHub

  繁體 雙語
Lightweight MongoDB-backed session store for Connect and Express
  • 源代码名称:connect-mongodb-session
  • 源代码网址:http://www.github.com/mongodb-js/connect-mongodb-session
  • connect-mongodb-session源代码文档
  • connect-mongodb-session源代码下载
  • Git URL:
    git://www.github.com/mongodb-js/connect-mongodb-session.git
    Git Clone代码到本地:
    git clone http://www.github.com/mongodb-js/connect-mongodb-session
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/mongodb-js/connect-mongodb-session
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    
    connect-mongodb-session

    :用于连接的-backed会话存储和Express。 这意味着它是一个很好的维护和完全功能的模块,如连接 mongo。

    Build StatusCoverage Status

    MongoDBStore

    这个模块导出单个函数,该函数接受连接( 或者表示) 实例,并返回一个 MongoDBStore 类,可以用于在MongoDB中存储会话。

    ,它可以存储 4个会话的会话

    如果传入 express-session 模块的实例,那么类将使你能够在MongoDB中存储你的表达会话。

    MongoDBStore类具有 2个必需选项:

    注意:你可以向 MongoDBStore 构造函数传递回调,但是这完全是可选的。 Express 3.x 示例演示了可以在同步类似的样式中使用MongoDBStore类: 模块将管理你的内部连接状态。

    var express =require('express');
     var session =require('express-session');
     var MongoDBStore =require('connect-mongodb-session')(session);
     var app =express();
     var store =newMongoDBStore(
     {
     uri:'mongodb://localhost:27017/connect_mongodb_session_test',
     collection:'mySessions' });
     // Catch errorsstore.on('error', function(error) {
     assert.ifError(error);
     assert.ok(false);
     });
     app.use(require('express-session')({
     secret:'This is a secret',
     cookie: {
     maxAge:1000*60*60*24*7// 1 week },
     store: store,
     // Boilerplate options, see:// * https://www.npmjs.com/package/express-session#resave// * https://www.npmjs.com/package/express-session#saveuninitialized resave:true,
     saveUninitialized:true }));
     app.get('/', function(req, res) {
     res.send('Hello '+JSON.stringify(req.session));
     });
     server =app.listen(3000);
     console.log('listening on port 3000');
     

    它可以存储最新的3。x的会话

    如果使用 Express 3. x,,则需要通过Express模块本身而不是 express-session 模块。 会话存储是 3.x 中表示核心的一部分,但不是 4. x. 中的一部分

    注意:这个例子不会向 MongoDBStore 构造函数传递回调。 这里模块可以在数据库连接后排队执行请求。 但是,如果 MongoDBStore 构造函数不能连接并且没有传递回调,则该构造函数将引发异常。

    var express =require('../vendor/express-3.18.1');
     var MongoDBStore =require('connect-mongodb-session')(express);
     var app =express();
     var store =newMongoDBStore(
     {
     uri:'mongodb://localhost:27017/connect_mongodb_session_test',
     collection:'mySessions' });
     app.use(express.session({
     secret:'This is a secret',
     cookie: {
     maxAge:1000*60*60*24*7// 1 week },
     store: store,
     // Boilerplate options, see:// * https://www.npmjs.com/package/express-session#resave// * https://www.npmjs.com/package/express-session#saveuninitialized resave:true,
     saveUninitialized:true }));
     app.get('/', function(req, res) {
     res.send('Hello '+JSON.stringify(req.session));
     });
     server =app.listen(3000);
     console.log('listening on port 3000');
     

    当无法连接到MongoDB时,它将抛出错误

    你应该将回调传递给 MongoDBStore 构造函数以捕获错误。 如果没有将回调传递给 MongoDBStore 构造函数,MongoDBStore 将在无法连接的情况下进行 throw

    var express =require('../vendor/express-3.18.1');
     var MongoDBStore =require('connect-mongodb-session')(express);
     var app =express();
     var numExpectedSources =2;
     var store =newMongoDBStore(
     {
     uri:'mongodb://bad.host:27000/connect_mongodb_session_test?connectTimeoutMS=10',
     collection:'mySessions' },
     function(error) {
     // Should have gotten an error });
     store.on('error', function(error) {
     // Also get an error here });
     app.use(express.session({
     secret:'This is a secret',
     cookie: {
     maxAge:1000*60*60*24*7// 1 week },
     store: store,
     // Boilerplate options, see:// * https://www.npmjs.com/package/express-session#resave// * https://www.npmjs.com/package/express-session#saveuninitialized resave:true,
     saveUninitialized:true }));
     app.get('/', function(req, res) {
     res.send('Hello '+JSON.stringify(req.session));
     });
     server =app.listen(3000);
     

    EXP  Light  Store  expr  mongo  Mongodb  
    相关文章