title: Defining Mongoose Models in Separate Module
body: <p>I would like to separate my Mongoose models in a separate file. I have attempted to do so like this:</p>
  
  <pre><code>var mongoose = require("mongoose");
  var Schema = mongoose.Schema;
  var ObjectId = Schema.ObjectId;
  
  var Material = new Schema({
      name                :    {type: String, index: true},
      id                  :    ObjectId,
      materialId          :    String,
      surcharge           :    String,
      colors              :    {
          colorName       :    String,
          colorId         :    String,
          surcharge       :    Number
      }
  });
  
  var SeatCover = new Schema({
      ItemName            :    {type: String, index: true},
      ItemId              :    ObjectId,
      Pattern             :    String,
      Categories          :    {
          year            :    {type: Number, index: true},
          make            :    {type: String, index: true},
          model           :    {type: String, index: true},
          body            :    {type: String, index: true}
      },
      Description         :    String,
      Specifications      :    String,
      Price               :    String,
      Cost                :    String,
      Pattern             :    String,
      ImageUrl            :    String,
      Materials           :    [Materials]
  });
  
  mongoose.connect('mongodb://127.0.0.1:27017/sc');
  
  var Materials = mongoose.model('Materials', Material);
  var SeatCovers = mongoose.model('SeatCover', SeatCover);
  
  exports.Materials = Materials;
  exports.SeatCovers = SeatCovers;
  </code></pre>
  
  <p>Then, I have attempted to use the model like this:</p>
  
  <pre><code>var models = require('./models'); 
  
  exports.populateMaterials = function(req, res){
      console.log("populateMaterials");
      for (var i = 0; i &lt; materials.length; i++ ){
          var mat = new models.Materials();
          console.log(mat);
          mat.name = materials[i].variantName;
          mat.materialId = materials[i].itemNumberExtension;
          mat.surcharge = materials[i].priceOffset;
          for (var j = 0; j &lt; materials[i].colors.length; j++){
              mat.colors.colorName = materials[i].colors[j].name;
              mat.colors.colorId = materials[i].colors[j].itemNumberExtension;
              mat.colors.surcharge = materials[i].colors[j].priceOffset;
          }
          mat.save(function(err){
              if(err){
                  console.log(err);
              } else {
                  console.log('success');
              }
          });
      }
      res.render('index', { title: 'Express' });
  };
  </code></pre>
  
  <p>Is this a reasonable approach to referencing a model in a separate module? </p>