title: Mongoose Populate returning null or undefined
body: <p>I'm sorry if this is a n00b question, I've been searching Google &amp; Stack for hours now and I've got to ask!</p>
  
  <p>I have two schemas, User and Story, shown below. I am trying to reference the User for a Story using the Ref option to Populate in a Query - I've using mySQL before and so wanted to try to replicate a JOIN statement.
  Whenever I try to use populate I just get the objectID returned, or null (shown below).</p>
  
  <p><strong>Edited 12 Nov to fix hardcoded IDs &amp; add console data</strong></p>
  
  <p><strong>story-schema.js</strong></p>
  
  <pre><code>var mongoose = require('mongoose'),
  Schema = mongoose.Schema,
  User = require('./user-schema');
  
  var StorySchema = new Schema({  
  title: { type: String, required: true },  
  author_id: { type: Schema.Types.ObjectId, ref: 'User' },
  summary: { type: String, required: true },
  rating: { type: String, required: true }
  });
  
  module.exports = mongoose.model('Story', StorySchema, 'stories');
  </code></pre>
  
  <p><strong>user-schema.js</strong></p>
  
  <pre><code>var mongoose = require('mongoose'),
  Schema = mongoose.Schema;
  
  var UserSchema = new Schema({
      username: { type: String, required: true, index: { unique: true } },
      is_admin: {type: Boolean, required: true, default: false }
  });
  </code></pre>
  
  <p><strong>save - id hardcoded for example</strong></p>
  
  <pre><code>app.post('/api/new_story', function(req, res){
  var story;
  story = new Story({
      title: req.body.title,
      author_id: mongoose.Types.ObjectId(req.params._id), 
              /* ex of req.params._id: 527fc8ff241cdb8c09000003*/
      summary: req.body.summary,
      rating: req.body.rating
  });
  
  story.save(function(err) {
      if (!err) {
          return console.log("created");
      } else {
          return console.log(err);
      }
  });
  return res.send(story);
  });
  </code></pre>
  
  <p><strong>example user when logged in terminal</strong></p>
  
  <pre><code>{
  "__v" : 0,
  "_id" : ObjectId("527fc8ff241cdb8c09000003"),
  "is_admin" : false,
  "username" : "ted"
  }
  </code></pre>
  
  <p><strong>example story when logged in terminal</strong></p>
  
  <pre><code>{
  "title" : "Test Story",
  "author_id" : "527fc8ff241cdb8c09000003",
  "summary" : "Test summary",
  "rating" : "12",
  "_id" : ObjectId("52827692496c16070b000002"),
  "__v" : 0
  }
  </code></pre>
  
  <p><strong>queries</strong></p>
  
  <pre><code>//other mongoose/app includes above
  User = require('./config/schema/user-model'),
  Story = require('./config/schema/story-model');
  
  // data.author_id = 527fc8ff241cdb8c09000003 
  // data.author_id.username = undefined
  app.get('/api/query/:id', function (req, res){
  return Story.findOne({_id:req.params.id})
  .populate( { path: 'User' } )
  .exec(function (err, data) {
              console.log(data.author_id);
              console.log(data.author_id.username);
            if (err) {
              return res.json({error:err})
            }
          })
  });
  
  // data.author_id = null 
  app.get('/api/query2/:id', function (req, res){
  return Story.findOne({_id:req.params.id}) //_id hardcoded for example
  .populate( 'author_id' )
  .exec(function (err, data) {
              console.log(data.author_id);
            if (err) {
              return res.json({error:err})
            }
          })
  });
  </code></pre>
  
  <p>In the first query I get the author_id I already saved back, which kind of makes sense as that's what I saved - but I access the username.</p>
  
  <p>In the second query I can't even access the author_id I've already saved.</p>
  
  <p><strong>Edit:</strong> I can run a normal GET query fine without the 'populate'</p>
  
  <p><strong>What I'd like to happen</strong></p>
  
  <p>Is to be able to access the author information from the story - this is more like a proof of concept.
  Eventually I'd like to reference the Story _id in the the User model as there can be many Stories to a User, but only one User per Story but thought I'd start here first.</p>