【问题标题】:nodejs session storagenodejs会话存储
【发布时间】:2013-03-10 17:08:13
【问题描述】:

在 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?

谢谢!

【问题讨论】:

    标签: node.js mongoose


    【解决方案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】:

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

      这是一个真实的例子:https://github.com/alexyoung/nodepad

      【讨论】:

      • 我试过这个: store: MongoSessionStore('mongodb://localhost/test') 但它不起作用
      • 我用那个。 connect.createServer(connect.bodyParser(), connect.cookieParser(), connect.session({ cookie: {maxAge: 60000 * 20} // 20 分钟 , secret: 'foo' , store: new mongoStore({db: db) }) })
      • 删除'新'字,离开-> store: mongoStore('mongodb://localhost/nodepad-test', secret: 'asdasd');
      • 我已经尝试过您的示例,但在 MongoDB 中没有看到数据库 nodepad-development。你看到那个数据库了吗?
      【解决方案3】:

      Mongoose 应该以某种方式公开连接。

      【讨论】:

        【解决方案4】:

        如果您使用connect-mongo,请像这样传递您的猫鼬连接:

        var express = require('express');
        var MongoStore = require('connect-mongo')(express);
        
        new MongoStore({ mongoose_connection: mongoose.connection })
        

        一切都会如你所愿。

        【讨论】:

          猜你喜欢
          • 2013-06-20
          • 2015-06-12
          • 1970-01-01
          • 2015-02-20
          • 2013-12-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-08
          相关资源
          最近更新 更多