簡體   English   中英

如何防止Node.js中的非阻塞?

[英]How to prevent non-blocking in Node.js?

這是我的代碼的一部分。

var project_url;
project_url = getProjectUrl(req,name);

var collection = db.get('project');     
collection.insert({
     "id" : projectId,
     "name" : name,
     "url" : project_url
}, function(err,doc){
     if(err){
         res.send("There was a problem");
     }
});

var collection2 = db.get('project_details');
collection2.insert({
    "id" : projectId,
    "media" : media
}, function(err,doc){
     if(err){
        res.send("There was a problem");
     }
});

結合使用Node.js和MongoDB,我想將數據插入數據庫AFTER函數getProjectUrl,該函數返回一個字符串值,該操作已完成。 但是,它異步運行,以便在getProjectUrl返回值之前執行collection.insert和collection2.insert。 因此,當我檢查數據庫時,project_url為null。 如何在getProjectUrl返回值之后執行插入?

例如,使您的函數具有回調的getProjectUrl

function getProjectUrl(req, name, callback) {
    var result = 'foo'; // I'm not sure how you get it

    callback(result);
}

接着

getProjectUrl(req, name, function(project_url) {
    var collection = db.get('project');     
    collection.insert({
         "id" : projectId,
         "name" : name,
         "url" : project_url
    }, function(err,doc){
         if(err){
             res.send("There was a problem");
         }
    });

    var collection2 = db.get('project_details');
    collection2.insert({
        "id" : projectId,
        "media" : media
    }, function(err,doc){
         if(err){
            res.send("There was a problem");
         }
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM