0

違いは何ですか:

var cursor = collection.find();
//do something

collection.find(null, function(err, cursor) {
  //do something
}

最初のものは「ブロック」しますか?もしそうなら、「ブロック」はmongoがカーソルを返すまでノードをロックすることを意味しますか?

(最初の例はnode-mongodb-nativeのドキュメントからのものです。例がブロックされている場合、なぜドキュメントに記載するのでしょうか?)

4

1 に答える 1

4

最初のものは同期的で、ブロックされます。mongo がタイムアウトした場合、ノード サーバーは他に何もできないため、基本的に「ロックアップ」されます。

これは、おそらくサーバーの初期化中またはコマンド ライン ツールを作成する場合を除き、避ける必要があります。

2 つ目は、mongo からの結果が返されたときにコールバックが呼び出される前に、他のイベントを処理できるようにします。

于 2013-02-22T01:03:17.930 に答える