2016-04-02 111 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!! 
} 

我怎麼能執行最後一行行「返回myVar的」 collection.insert函數結束後才?在這種情況下,我需要返回true。

謝謝!

回答

2

它顯示false,因爲console.log之前的這兩個函數是異步的。由於這個原因,console.log被執行,而db.collectioncollection.insert仍在執行,所以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

相關問題