これは正しいコールバック構文ですが、find
コールバックに提供するのはCursor
です 、ドキュメントの配列ではありません。したがって、コールバックでドキュメントの配列として結果を提供する場合は、toArray
を呼び出します。 それらを返すためにカーソル上で:
collection.find({'_id':o_id}, function(err, cursor){
cursor.toArray(callback);
db.close();
});
関数のコールバックは引き続きerr
を提供する必要があることに注意してください 呼び出し元がクエリが機能したかどうかを認識できるようにするためのパラメータ。
2.xドライバーアップデート
find
コールバックを介してカーソルを提供するのではなく、カーソルを返すようになったため、一般的な使用法は次のように簡略化できます。
collection.find({'_id': o_id}).toArray(function(err, results) {...});
または、単一のドキュメントが予想されるこの場合、findOne
を使用する方が簡単です。 :
collection.findOne({'_id': o_id}, function(err, result) {...});