47

MongoDB/Node/Express で実行するcollection.find()場合、終了時にコールバックを取得したいと考えています。これの正しい構文は何ですか?

 function (id,callback) {

    var o_id = new BSON.ObjectID(id);

    db.open(function(err,db){
      db.collection('users',function(err,collection){
        collection.find({'_id':o_id},function(err,results){  //What's the correct callback synatax here?
          db.close();
          callback(results);
        }) //find
      }) //collection
    }); //open
  }
4

2 に答える 2

45

これは正しいコールバック構文ですが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) {...});
于 2012-07-26T03:09:04.747 に答える