MongoDB:mongos进程,node-mongodb-native,connect-session-mongo

时间:2012-08-28 00:38:04

标签: node.js mongodb connect sharding

我正在使用带有connect-session-mongo node-mongodb-native 驱动程序。当我使用connect-session-mongo与Mongos时,它会在connect-session-mongo的set方法中抛出一个错误:

[Error: no open connections]

如果我注释掉connect-session-mongo代码,似乎工作正常。是否有其他人同时使用sharding

仅使用replica-set很好,但是当我们在测试实例上设置分片时,它一直是个噩梦。

任何想法如何让他们玩得很好?我应该为每个人运行第二个mongos进程吗?

2 个答案:

答案 0 :(得分:1)

你在哪里调用db.open?我觉得你在启动应用程序之前不等待db.open解决。你可以通过在db.open回调中调用app.listen来解决这个问题。以下内容适用于我:

var app = require('express').createServer(),
    mongo = require('mongodb'),
    db = new mongo.Db('dbname', new mongo.Server('localhost', 27017, { autoreconnect: true })),
    MongoSessionStore = require('connect-mongodb');

app.configure(function() {
    // ...
    app.use(express.session({ secret: "supersecret", store: new MongoSessionStore({url: 'localhost'}) }));
    // ...
});

app.get('/', route.index);
// etc...

db.open(function(err){
    if(err) throw err;

    app.listen(3000);
})

答案 1 :(得分:1)

修正了Node.JS Mongo驱动程序更新1.1.5。