2012-01-10 21 views
0

私はC++ドライバを使ってドキュメントをMongoDBに保存するC++関数を持っています。これは、引数として、接続の参照を取りますC++ドライバを使用してMongoDBに再接続するには?

http://pastebin.com/jwRDhNWQ

私はMongoDBのを再起動すると、私は新しい接続が行われていることがわかります。 ただし、conn.isFailed()はtrueのままです。

これ多分私は再接続したときに、私は、&conn は私が&conn.connect("localhost");のように&connを使用しないときconnはなくを使用しています、私はエラーが私はこの問題を解決するにはどうすればよい

error: lvalue required as unary ‘&’ operand 

をmessage-得るという事実による起こっ?つまり、新しい接続が確立されたときにconn.isFailed()がfalseになるように、基礎となる接続を変更するか?

+0

あなたの問題は、 '&'演算子を使うこととは関係ありません。あなたが '&'を使用しようとすると、単に 'connect'メソッドの戻り値のアドレスを取得しようとします。代わりに、正しく接続/再接続しているかどうかを確認してください。 –

+0

はい、MongoDBログで再接続が成功したことがわかります – user837208

答えて

1

mongo :: DBClientConnection :: DBClientConnectionコンストラクタで_autoReconnectを有効にする必要があります。
http://api.mongodb.org/cplusplus/current/classmongo_1_1_d_b_client_connection.html#a6a1a348024dd302572504b7bfb6e74a2

isfailed()メソッドによって返される変数_failedは、_check Connectionが呼び出されるまで設定されません。 _checkConnectionは何かがデータベースに送られるまで呼び出されないので、代わりに_isFailedを呼び出す前にpingコマンドを呼び出すことができます。ただし、_autoReconnectを有効にすることをお勧めします。

+0

ありがとうございます!コンストラクタで_autoReconnectを有効にすることに進みます – user837208

関連する問題