【问题标题】:(Node.js) How to change a global variable inside a mongoDB function? [duplicate](Node.js)如何更改 mongoDB 函数中的全局变量? [复制]
【发布时间】:2016-07-22 10:15:08
【问题描述】:

这里有一个示例代码:

//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 函数结束后执行最后一行“return myVar”?在这种情况下,我需要返回 true。

谢谢!

【问题讨论】:

    标签: javascript node.js mongodb asynchronous callback


    【解决方案1】:

    它显示false,因为console.log 之前的这两个函数是异步的。由于这个原因,console.logdb.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);
        });
    });
    

    【讨论】:

    • 你比我快哈哈!
    • 哈哈!这很容易:P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 2021-09-18
    相关资源
    最近更新 更多