Skip to content

Instantly share code, notes, and snippets.

@bouzuya
Created April 8, 2014 22:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bouzuya/10205660 to your computer and use it in GitHub Desktop.
Save bouzuya/10205660 to your computer and use it in GitHub Desktop.
// Example:
// var catModel = require('./cat');
// var Cat = catModel();
// var cat = new Cat({ name: 'mike' });
// cat.say(); //=> myao! i'm mike!
//
// var mongoose = require('mongoose');
// catModel({ mongoose: new mongoose.Mongoose() });
var defineModel = function(mongoose, modelName, defineSchema) {
var modelArgs = [modelName];
if (mongoose.modelNames().indexOf(modelName) < 0) {
modelArgs.push(defineSchema(mongoose));
}
return mongoose.model.apply(mongoose, modelArgs);
};
var defineSchema = function(mongoose) {
var Schema = new mongoose.Schema({
name: String
});
Schema.methods.say = function() {
return 'myao! i\'m ' + this.name + '!';
};
return Schema;
};
module.exports = function(options) {
var mongoose = options.mongoose ? options.mongoose : require('mongoose');
if (options.mongoose) delete options.mongoose;
return defineModel(mongoose, 'Cat', defineSchema);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment