2016-04-02 14 views
-1

は、ここでのコード例があります:(Node.js)mongoDB関数内のグローバル変数を変更するにはどうすればいいですか?

//IF I JUST TRY TO CONNECT TO MONGODB 
function ConnectToMongo(db) { 
    myVar = false; 
    db.collection("MyCollection", function(error,collection) { 
     myVar = true; 
    }); 
    console.log(myVar); // RETURN TRUE 
} 

//IF I TRY TO INSERT DATA 
function InsertDataOnMongoDB(db) { 
    myVar = false; 
    db.collection("MyCollection", function(error,collection) { 
     collection.insert(data, function(error,result){ 
      myVar = true; 
     }); 
    }); 
    return myVar; // RETURNS FALSE!! 
} 

がどのように私は最後の行の行を実行することができますcollection.insert機能が終了した後にのみ「myVarに戻りますか」?この場合、私は真実に戻る必要があります。

ありがとうございました!

答えて

2

console.logより前の2つの機能が非同期であるため、falseと表示されます。このため、db.collectioncollection.insertがまだ実行されている間にconsole.logが実行されるため、この2つの操作が完了するとmyVar = true;が開始されます。

あなたはまっすぐmyVar = true;

後、この方法は、あなたのconsole.logを挿入する必要があり、「真」を見るために:

db.collection("MyCollection", function(error, collection){ 
    collection.insert(data, function(error, result){ 
     myVar = true; 
     console.log(myVar); 
    }); 
}); 
+1

あなたが(笑)私よりも速かったです! –

+0

ハハ!それは簡単だった:P – boxHiccup

関連する問題