在Node中正确使用回调处理程序

时间:2016-10-18 22:01:16

标签: node.js mongodb asynchronous callback

我正在尝试获取回调中返回的数据,但我的回调函数(callbackFunc())没有被执行,可能是因为我接近这个方式。如果有人会指出我正确的方向我不胜感激。

由于

   var url = 'mongodb://localhost:27017/bac';
   var term = 'usa';

   MongoClient.connect(url, function(err, db) {

       assert.equal(null, err);
       findDocument(term.toUpperCase(),'country_code', db, function() {db.close();});

   });



function callbackFunc(data){

  console.log("inside callbackFunc()...");
  console.log(data);

}

var findDocument = function(term, field, db, callbackFunc){
    var collection = db.collection('bac');
    collection.findOne({'country_code' : term}, function(err, document){
         assert.equal(err,null);
         console.log("Found this matching record for "+term);
         console.log(document);
         callbackFunc(document);
    });
}

2 个答案:

答案 0 :(得分:1)

调用的回调函数不是定义的callbackFunc

function callbackFunc(data){ console.log("inside callbackFunc()..."); console.log(data); }

但是

function() {db.close();}

因为你传递了函数参数。

答案 1 :(得分:1)

让我们看看你的代码:

findDocument(term.toUpperCase(),'country_code', db, function() {db.close();});

您传递错误的回调函数,传递function() {db.close();}

我想你想通过:

function callbackFunc(data){

  console.log("inside callbackFunc()...");
  console.log(data);

}

如此充分使用:

findDocument(term.toUpperCase(),'country_code', db, callbackFunc);