2011-09-10 13 views
3

データベースmongoを効率的に呼び出すことができないのかどうかは確かです。今すぐ、私は、データベースを開き、コレクションを取得し、私のクエリを行い、接続を閉じます。 connection already openedMongoDB:接続が既に開いているエラー

EDIT:

は私が散発的に投げモンゴとの問題を抱えて、」私がやっているすべてはで、すぐに数回ログアウトであり、このエラーは、サーバーをクラッシュ、スローされます。

この問題の原因は何ですか?

ありがとうございました!

(私はノード-ネイティブドライバを使用しています)

+0

depends.if同じページ内で複数のリクエストを作成する場合は、ページが終了する直前に接続を閉じる – ajreal

+3

ほとんどのデータベースでは、接続プールを使用することが標準的な方法です。プールは、必要に応じて必要に応じて追加の同時接続を自動的に開き、通常、開いている各接続が一定期間アイドル状態になった後で閉じるようになります。これは、各要求に対して新しい接続を開いたり閉じたりするより効率的です。しかし、これがmongodbとnode.jsでどのように行われるか正確には分かりません。 – aroth

+0

これは私が必要とするかもしれない、私はそれを調べます。ありがとう! – fancy

答えて

1

のNode.jsが非同期であるので、あなたはあなたのコードが一度に完全に実行されることを特定することはできません。

非同期操作中(すべてのdb操作がそうであるように)、node.jsは別の要求を処理している可能性があります。これにより、既に開いている場合でも新しい接続が開きます。

あなたがすべきことは、アプリケーション全体に対して1つの接続を開くことです。すべてのページ要求時にデータベースに接続するのはあまりにも効率的ではありません。経験したように、正しく実装しなければ問題が発生する可能性があります。

関連する問題