我正在使用 node-mongodb-native 驱动程序和 connect-session-mongo。当我将 connect-session-mongo 与 Mongos 一起使用时,它会在 connect-session-mongo 的 set 方法中抛出错误:
[Error: no open connections]
如果我注释掉 connect-session-mongo 代码,它似乎工作得很好。还有人将它们与sharding一起使用吗?
仅使用副本集还不错,但是当我们在测试实例上设置分片时,这就是一场噩梦。
有什么办法让他们玩得开心吗?我应该为每个进程运行第二个 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 中修复。