2016-04-02 5 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 заканчивается? В этом случае мне нужно вернуть истину.

Спасибо!

ответ

2

Он отображает false, потому что эти две функции перед console.log являются асинхронными. По этой причине console.log выполняется, пока db.collection и collection.insert все еще выполняются, поэтому myVar = true; начинается, когда эти две операции завершены.

Для того, чтобы увидеть «истинный» вы должны вставить console.log прямо после myVar = true;

таким образом:

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

Вы были быстрее, чем я ха-ха! –

+0

Ха-ха! Это было легко: P – boxHiccup

Смежные вопросы