2016-11-08 3 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'変数を印刷するとき、それは定義されていません。コールバックの外部から変数にアクセスする方法。現在、エラーコールバックを得ることがあなたのtest()機能、あなたのtest()関数内のため、ステートメントに引数として任意のコールバック関数を渡しされていない機能のnodejsアクセス変数のように、コールバッファブルのようなコールバック外の変数

+0

coll = db;この – Mahi

+1

を既に試してみてください。それはMongoClient.connect関数内で実行されています。 – AJS

+0

コールバックは非同期で、コールバック関数の中に 'console.log(coll);'を入れます。関数の外側で変数 'coll'を呼び出すことはできません。なぜなら、' MongoClient.connect'コールバックの後で定義されるのは、非同期であるからです。なぜ 'console.log(coll)'が空に出力されるのですか?undefined | null – Beginner

答えて

1

ではありません:callback(coll)、前console.log(coll)を呼び出すスクリプトを終了エラーをスローします。

+1

それはテスト(function(coll){console.log(coll)})のようにする必要があります – AJS

+0

@ABCそれは異なります。コールバック関数で何をしたいですか? –

+0

私はcoll変数をグローバルにしたい。私はMongoClient.connect関数の外でデータベースオブジェクトにアクセスできます。どうすればこのことができますか?助けてください – AJS

関連する問題