【问题标题】:Proper usage of a callback handler in Node在 Node 中正确使用回调处理程序
【发布时间】:2017-02-28 08:26:09
【问题描述】:

我正在尝试获取回调中返回的数据,但我的回调函数 (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);
    });
}

【问题讨论】:

    标签: node.js mongodb asynchronous callback


    【解决方案1】:

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

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

    但是

    function() {db.close();}

    因为您正在传递函数参数。

    【讨论】:

      【解决方案2】:

      让我们看看你的代码:

      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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-20
        相关资源
        最近更新 更多