title: How to get around this MongoDB/Node asynchronous issue?
body: <p>I have the following code:</p>
  
  <pre><code>// Retrieve
  var MongoClient = require("mongodb").MongoClient;
  var accounts = null;
  var characters = null;
  
  // Connect to the db
  MongoClient.connect("mongodb://localhost:27017/bq", function(err, db) {
     if(err) { return console.dir(err); }
  
      db.createCollection('accounts', function(err, collection) {
          if(err) { return console.dir(err); }
          else { accounts = collection; }
  
          createAccount("bob","bob");
          createAccount("bob","bob");
          createAccount("bob","bob");
          createAccount("bob","bob");
      });
  });
  
  
  function createAccount(email, password)
  {
      accounts.findOne({"email":email}, function(err, item) {
          if(err) { console.dir(err); }
          else {
              if(item === null) {
                  accounts.insert({"email":email, "password":password}, function(err, result) {
                      if(err) { console.dir(err); }
                      else { console.dir("Account " + email + " created."); }
                  });
              }
              else {
                  console.dir("Account already exists.")
              }
  
          }
      });
  }
  </code></pre>
  
  <p>When I run the script the first time, I end up with 4 accounts for bob.  When I run it the second time, I get 4 messages that the account already exists.</p>
  
  <p>I'm pretty sure I know why this is, and the solution I have come up with is to use some kind queue for processing each read/write of the database in order one at a time.  What I am wanting to know, is whether that is the proper way to go about it, and what would the general best practice for this be?</p>