diff options
Diffstat (limited to 'common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/schema')
3 files changed, 155 insertions, 0 deletions
diff --git a/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/schema/schema.js b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/schema/schema.js new file mode 100644 index 0000000..5bc99ae --- /dev/null +++ b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/schema/schema.js @@ -0,0 +1,119 @@ +/** + * Module dependencies. + */ + +var mongoose = require('../../lib'), + Schema = mongoose.Schema; + +/** + * Schema definition + */ + +// recursive embedded-document schema + +var Comment = new Schema(); + +Comment.add({ + title: { + type: String, + index: true + }, + date: Date, + body: String, + comments: [Comment] +}); + +var BlogPost = new Schema({ + title: { + type: String, + index: true + }, + slug: { + type: String, + lowercase: true, + trim: true + }, + date: Date, + buf: Buffer, + comments: [Comment], + creator: Schema.ObjectId +}); + +var Person = new Schema({ + name: { + first: String, + last: String + }, + email: { + type: String, + required: true, + index: { + unique: true, + sparse: true + } + }, + alive: Boolean +}); + +/** + * Accessing a specific schema type by key + */ + +BlogPost.path('date') +.default(function() { + return new Date(); +}) +.set(function(v) { + return v === 'now' ? new Date() : v; +}); + +/** + * Pre hook. + */ + +BlogPost.pre('save', function(next, done) { + /* global emailAuthor */ + emailAuthor(done); // some async function + next(); +}); + +/** + * Methods + */ + +BlogPost.methods.findCreator = function(callback) { + return this.db.model('Person').findById(this.creator, callback); +}; + +BlogPost.statics.findByTitle = function(title, callback) { + return this.find({title: title}, callback); +}; + +BlogPost.methods.expressiveQuery = function(creator, date, callback) { + return this.find('creator', creator).where('date').gte(date).run(callback); +}; + +/** + * Plugins + */ + +function slugGenerator(options) { + options = options || {}; + var key = options.key || 'title'; + + return function slugGenerator(schema) { + schema.path(key).set(function(v) { + this.slug = v.toLowerCase().replace(/[^a-z0-9]/g, '').replace(/-+/g, ''); + return v; + }); + }; +} + +BlogPost.plugin(slugGenerator()); + +/** + * Define model. + */ + +mongoose.model('BlogPost', BlogPost); +mongoose.model('Person', Person); diff --git a/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/schema/storing-schemas-as-json/index.js b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/schema/storing-schemas-as-json/index.js new file mode 100644 index 0000000..284b478 --- /dev/null +++ b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/schema/storing-schemas-as-json/index.js @@ -0,0 +1,27 @@ + +// modules +var mongoose = require('../../../lib'); +var Schema = mongoose.Schema; + +// parse json +var raw = require('./schema.json'); + +// create a schema +var timeSignatureSchema = Schema(raw); + +// compile the model +var TimeSignature = mongoose.model('TimeSignatures', timeSignatureSchema); + +// create a TimeSignature document +var threeFour = new TimeSignature({ + count: 3, + unit: 4, + description: '3/4', + additive: false, + created: new Date, + links: ['http://en.wikipedia.org/wiki/Time_signature'], + user_id: '518d31a0ef32bbfa853a9814' +}); + +// print its description +console.log(threeFour); diff --git a/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/schema/storing-schemas-as-json/schema.json b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/schema/storing-schemas-as-json/schema.json new file mode 100644 index 0000000..5afc626 --- /dev/null +++ b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/schema/storing-schemas-as-json/schema.json @@ -0,0 +1,9 @@ +{ + "count": "number", + "unit": "number", + "description": "string", + "links": ["string"], + "created": "date", + "additive": "boolean", + "user_id": "ObjectId" +} |