Node.js MongoDB:mongos进程、节点MongoDB本机、连接会话mongo
我正在使用节点mongodb本机驱动程序。当我将connect session mongo与Mongos一起使用时,它在connect session mongo的set方法中抛出一个错误:Node.js MongoDB:mongos进程、节点MongoDB本机、连接会话mongo,node.js,mongodb,connect,sharding,Node.js,Mongodb,Connect,Sharding,我正在使用节点mongodb本机驱动程序。当我将connect session mongo与Mongos一起使用时,它在connect session mongo的set方法中抛出一个错误: [Error: no open connections] 如果我注释掉连接会话mongo代码,它似乎工作得很好。还有人同时使用这两个吗 只使用副本集是可以的,但当我们在测试实例上设置切分时,这是一场噩梦 有什么办法让他们玩得开心吗?我应该为每个数据库运行第二个mongos进程吗?您在哪里调用db.open
[Error: no open connections]
如果我注释掉连接会话mongo代码,它似乎工作得很好。还有人同时使用这两个吗
只使用副本集是可以的,但当我们在测试实例上设置切分时,这是一场噩梦
有什么办法让他们玩得开心吗?我应该为每个数据库运行第二个mongos进程吗?您在哪里调用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);
})
在Node.JS Mongo驱动程序更新1.1.5中修复。是的,几个月来工作正常。就在我们切换到Mongos而不是MongoServer时,它死掉了。