2012-08-03 34 views
0

我對Node.js非常陌生,我使用的是MongoDb驅動程序,我瞭解Node.js的工作流是eventdriven,並且所有內容都運行異步,但我不明白我用腳本所以Node.js MongoDb確保收集異步工作流程

var mongo = require('mongodb'); 
var db = new mongo.Db('meta', new mongo.Server('localhost', 27017, { auto_reconnect: true })); 

db.open(function(error, db){ 
    if(error){ 
    throw error; 
    } 

    db.collection('logs', function(error, collection){ 
    if(!collection){ 
     db.createCollection('logs', callback); // How does this callback works? I mean, how can we continue the previous execution of the script? 
    } 

    // Have fun. 
    }); 
}); 

上面我想:可以做這樣的事情

  1. 打開連接
  2. 檢查日誌收集,如果不能創造,否則繼續...
  3. 創建用戶?做工作?

我還是習慣了異步模式,感謝您的幫助。

回答

1

我通常在這種情況下什麼是包裹延續在名爲回調:

if (!collection) { 
    db.createCollection('logs', next); 
} else { 
    next(null, collection); 
} 

function next(err, collection) { 
    // do something 
} 

話雖這麼說,在createCollection方法也將返回集合對象且僅當它不創建已經存在。你可以寫:

db.createCollection('logs', function(err, collection) { 
    // do something 
});