programing

MongoDB collection.find()에 대한 콜백을 받는 방법

padding 2023. 5. 13. 09:16
반응형

MongoDB collection.find()에 대한 콜백을 받는 방법

실행할 때collection.find()MongoDB/Node/Express에서 완료되면 콜백을 받고 싶습니다.이것에 대한 올바른 구문은 무엇입니까?

 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
  }

그게 올바른 콜백 구문이지만, 무엇이find는 문서 배열이 아닌 콜백을 제공합니다.따라서 콜백으로 결과를 문서 배열로 제공하려면 커서를 호출하여 결과를 반환합니다.

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) {...});

또는 단일 문서가 필요한 경우에는 다음과 같이 사용하는 것이 더 간단합니다.

collection.findOne({'_id': o_id}, function(err, result) {...});

조니에 기반으로HK 답변 저는 단순히 제 통화를 db.open() 메서드 안에 포장했고 작동했습니다.고마워요 @Johnny홍콩의

app.get('/answers', function (req, res){
     db.open(function(err,db){ // <------everything wrapped inside this function
         db.collection('answer', function(err, collection) {
             collection.find().toArray(function(err, items) {
                 console.log(items);
                 res.send(items);
             });
         });
     });
});

그것이 예시로 도움이 되기를 바랍니다.

언급URL : https://stackoverflow.com/questions/11661545/how-to-get-a-callback-on-mongodb-collection-find

반응형