2012-09-03 80 views
1

有沒有人有一個很好的方式來訂購mongodb請求,因爲Nodejs是異步的。假設我將data1插入到數據庫中,並立即請求讀取該數據,那麼在將數據寫入數據庫之前,可能會執行我的讀取請求。Nodejs mongodb本地驅動程序,異步請求的執行順序

有沒有一種很好的解決方法,而不是強迫請求的同步行爲?

回答

2

您可以簡單地使用回調,只有在插入完成後纔會調用回調函數。

var 
    mongodb = require('mongodb'), 
    client = new mongodb.Db('test', new mongodb.Server('127.0.0.1', 27017, {})), 
    test = function (err, collection) { 
     collection.insert({ hello : 'world' }, {safe:true}, function(err, docs) { 
      collection.count(function(err, count) { 
       console.log(count); 
      }); 

      collection.find({ hello : 'world' }).toArray(function(err, results) { 
       console.log(results); 
      }); 
     }); 
    }; 

client.open(function(err, client) { 
    client.collection('test_collection', test); 
}); 

如果您需要更復雜的功能,請看async模塊。它應該幫助你組織許多回調。