3

2 つの質問があります。

まず、MongoDB のドキュメントでは常に を使用してから を参照してdb.open()db.collection()ますが、最初に呼び出さなくても API を操作できることに気付きましたdb.open().。そうしても安全ですか? APIは内部的に呼び出していdb.open()ますか?

http://mongodb.github.com/node-mongodb-native/api-generated/db.html#collection

第二に、呼び出されたかdbどうかを指定するオブジェクトにパラメーターがありますか? db.open()そうでない場合、どうすればdb.open()呼び出されたかどうかを確認できますか?

その理由は、mongo と通信するいくつかの関数を作成したためですが、一部の関数が相互に対話すると、データベースを複数回「開く」ことができないというエラーが発生します。

編集

dbオブジェクトでこのパラメーターを見つけました。これはの使用を決定するブール値のようですが、db.open()100%確実ではありません。誰か知っていますか?db.serverConfig.internalMaster

4

3 に答える 3

4

db オブジェクトが接続されているかどうかを知る必要がある場合は、db._state == 'connected' または db.serverConfig.isConnected() を確認できます。

アプリケーションを起動する前にデータベースが開かれていることを確認して、既知の接続済みオブジェクトを実際に mvc に渡す方がよいでしょう。

于 2012-05-07T07:37:38.627 に答える
1

その理由は、mongo と通信するいくつかの関数を作成したためですが、一部の関数が相互に対話すると、データベースを複数回「開く」ことができないというエラーが発生します。

db オブジェクトを複数回開くのではなく、再利用する必要があります。作成にはコストがかかるため、コレクション オブジェクトでも同じことを行う必要があります。

于 2012-05-06T22:07:46.940 に答える
0

私はjavascriptドライバーを使用しています.dbオブジェクトから直接「openCalled」ブール値プロパティを使用しています。それを参照するのは簡単です

if (!db.openCalled) { //open database }
于 2013-10-24T20:10:33.790 に答える