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

问题描述 投票:0回答:2

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

[Error: no open connections]

如果我注释掉 connect-session-mongo 代码,它似乎工作得很好。还有人将它们与sharding一起使用吗?

仅使用副本集还不错,但是当我们在测试实例上设置分片时,这就是一场噩梦。

有什么办法让他们玩得开心吗?我应该为每个进程运行第二个 mongos 进程吗?

node.js mongodb sharding node.js-connect connect-mongo
2个回答
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
投票

已在 Node.JS Mongo 驱动程序更新 1.1.5 中修复。

© www.soinside.com 2019 - 2024. All rights reserved.