2016-11-08 59 views
0
var coll= ''; 
    function test(callback){ 
     MongoClient.connect(url, function(err, db) { 
      if(err) throw err; 
      coll=db 
      callback(coll); 
     }); 
    } 

    test(); 
    console.log(coll) 

这是我的代码。当我打印'coll'变量时,它说未定义。如何从回调之外访问变量。目前得到错误回调不是一个函数在nodejs访问变量外面的回调像gloabal vararaible

+0

coll = db;试试这个 – Mahi

+1

已经在MongoClient.connect函数内完成了。 – AJS

+0

回调是异步的,你把'console.log(coll);'放在一个回调函数中。你不能在函数外面调用变量'coll',因为它只会在'MongoClient.connect'回调后定义,因为它是异步的。这就是为什么'console.log(coll)'输出为空| undefined | null – Beginner

回答

1

您是不通过任何回调函数作为参数传递给你的test()的功能,因此本声明的test()功能:callback(coll),将抛出结束脚本错误调用console.log(coll)之前。

+1

它应该像测试(函数(coll){console.log(coll)}) – AJS

+0

@ABC它取决于。你想用回调函数做什么? –

+0

我想让coll变量全局。这样我就可以访问MongoClient.connect函数外的数据库对象。我们应该怎么做 ?请帮助 – AJS