2016-04-02 8 views
-1

Hier gibt es ein Beispielcode:(Node.js) Wie ändere ich eine globale Variable in einer MongoDB-Funktion?

//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!! 
} 

Wie kann ich die letzte Zeile Zeile „return myVar“ execute erst nach collection.insert Funktion endet? Ich muss in diesem Fall wahr zurückkehren.

Vielen Dank!

Antwort

2

Es zeigt false an, da diese beiden Funktionen vor console.log asynchron sind. Aus diesem Grund wird console.log ausgeführt, während db.collection und collection.insert noch ausgeführt werden, so dass myVar = true; startet, wenn diese beiden Vorgänge beendet sind.

Um "true" Sie müssen geben Sie Ihre console.log gerade nach myVar = true;

auf diese Weise zu sehen:

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

Sie waren schneller als ich haha! –

+0

Haha! Es war einfach: P – boxHiccup

Verwandte Themen