2016-11-08 92 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