【问题标题】:Null store object with connect-mongo and express使用 connect-mongo 和 express 的空存储对象
【发布时间】:2013-04-24 16:13:30
【问题描述】:

我正在使用 Express 和 Connect-Mongo 来管理我的 Node.js/Socket.io 应用程序的会话。
我查看了 connect-mongo 文档,并尝试初始化数据库连接,但每当我尝试在其中存储任何内容时,存储对象始终为空并崩溃。
这是我正在使用的代码的 sn-p:

var mongoserver = new mongodb.Server('localhost', mongodb.Connection.DEFAULT_PORT, {safe:true}) ;
var store ;
app.use(express.session({
secret: 'secret', 
store: new MongoStore({ db: 'test'}, function(){
    db = new mongodb.Db('test', mongoserver, { w: 1 }) ;
    db.open(function(err, db){ 
        if(err){console.log('DB error', err) ;}

        db.collection('test', function(err, collection) {
          console.log('Collection...') ;
        });

        db.on("close", function(error){
            console.log("Connection to the database was closed!");
        });
    });
})
}));
io.sockets.on('connection', function (socket) {
store.set('test-sid', {foo:'bar'}, function(err, session) {}) ;
)};

所有其他变量(快递、服务器等)都已正确初始化,应用程序启动,我在控制台中看到与 mongo 的连接已被接受。有什么想法吗??

【问题讨论】:

    标签: node.js mongodb express socket.io


    【解决方案1】:

    您没有将商店存储在变量“商店”中。它被传递到会话配置中并设置为快速应用程序设置。

    要解决此问题,您可以创建存储并将其分配给变量,然后将其添加为设置,然后将其传递到会话配置中:

    // Create the store
    var store = new MongoStore(...);
    
    // Pass into session creation
    app.set(expression.session({
        store: store
    });
    
    // You can now access the store from the variable as you expected
    store.set('test-sid', {foo: 'bar'}, function(err, session) {});
    

    【讨论】:

      猜你喜欢
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-02
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多