2016-04-02 75 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

相关问题