質問

以下のように設定し、My MongoDBはユーザー名またはパスワードを必要としない:

mongo: {
    module: 'sails-mongo',
    url: "mongodb://127.0.0.1:27017/mydb",
    replSet: {
        servers: [
            {
                host: "127.0.0.1",
                port : 27018
            },
            {
                host: "127.0.0.1",
                port : 27019
            }
        ],
        options: {connectWithNoPrimary:true, rs_name:"rs0"}
    }      
}
.

うまく機能しています。つながりエラーが発生しないため、照会することができます。しかし、127.0.0.1:27017を停止したとき、127.0.0.1:27018はrs.status()を実行したようにプライマリになります。この後、私はもう照会をすることができなくなり、次の手順を実行し続けています。

エラー:オープン接続なし

私は上記のシナリオをテストするためにMongoDBネイティブドライバを使用したように私のローカルマシンにレプリカセットを正しく設定していることを確信しています(プライマリと2番目のセカンダリの引き継ぎを引き受ける)、問題はありません。

var url = 'mongodb://127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019/mydb?w=0&wtimeoutMS=5000&replicaSet=sg1&readPreference=secondary';

mongodb.MongoClient.connect(url, function(err, result) {
    if(err || result === undefined || result === null) {
          throw err;
    } else {
          db = result;  
    } 
});
.

役に立ちましたか?

解決

OK私は答えを見つけました。このメッセージはsession.jsのために発行されました。私はファイル内のすべてのものをコメントしていて、それは働いています。私が推測する理由はsession.jsにあり、それは単一のホストを指すだけです。これは元のプライマリです。このMongoDBプライマリを停止すると、session.jsは接続できなくなりました。また、レプリカセットにホストIPを入れることで、SESSIONS.JSでMongoDB URL文字列を試してみました(MongoDB://127.0.0.1:27018,127.0.0.1:27019 / MYDB)が失敗しました「帆船」。単一のホストのみを入れるとうまくいきます。

セッション情報を保存する必要がある場合は、別のMongoDBインスタンスを起動する必要があります。その後、session.jsはこの新しい瞬間にポイントします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top