title: Inserting data to MongoDB - no error, no insert
body: <p>I'm currently trying to make a register form using mongoDB and nodeJS - I've created new database and collection - I want to store: username, password, email and insert_time in my database.</p>
  
  <p>I've added unique indexes to username/email and checked if it works - and I can not add a duplicated entry using mongo's console or rockmongo (php mongodb manager) - so it works fine.</p>
  
  <p>However - when the piece of code that is supposed to register a new account is being executed and makes an insert with the data that is already in database - it returns an object that contains all the data that was supposed to be added with a new, unique id. The point is - it should return an error that would say that entries can not be duplicated and insert failed - instead it returns the data back and gives it a new id. Data that already resides in database remains untouched - even the ID stays the same - it's not rewritten with the new one returned by script's insert.</p>
  
  <p>So, the question is... what am I doing wrong? Or maybe everything is fine and database's insert should return data even if it's failed?...</p>
  
  <p>I even tried defining indexes before executing indexes.
  I tried inserting the data using mongoDB's default functions and <a href="https://github.com/gett/mongojs">mongoJS</a> functions - the result is the same in both cases.</p>
  
  <p>The code I'm trying to execute (for <a href="https://github.com/gett/mongojs">mongoJS</a>):</p>
  
  <pre><code>var dbconn = require("mongojs").connect('127.0.0.1:27017/db', ['users']);
  
  var register = function(everyone, params, callback)
  {
      // TODO: validation
  
      dbconn.users.ensureIndex({username:1},{unique:true});
      dbconn.users.ensureIndex({email:1},{unique:true});
  
      dbconn.users.save(
      {
          username: params.username,
          password: params.password,
          email: params.email,
          insert_time: Date.now()
      },
      function(error, saved)
      {
          if(error || !saved)
          {
              callback(false);
          }
          else
          {
              console.log(error);
              console.log(saved);
              callback(true);
          }
      });
  }
  </code></pre>
  
  <p>For both cases - inserting new data and inserting duplicated data that doesn't modify database in any way - ERROR is null and SAVED is just a copy of data that is supposed to be inserted. Is there any way to check if insert was made or not - or do I have to check whether the data already exists in database or not manually before/after making an insert?</p>