2012-09-03 27 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模块。它应该帮助你组织许多回调。