diff options
Diffstat (limited to 'common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/population/population-of-existing-doc.js')
-rw-r--r-- | common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/population/population-of-existing-doc.js | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/population/population-of-existing-doc.js b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/population/population-of-existing-doc.js new file mode 100644 index 0000000..c7eadfe --- /dev/null +++ b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/population/population-of-existing-doc.js @@ -0,0 +1,109 @@ + +var mongoose = require('../../lib'); +var Schema = mongoose.Schema; + +console.log('Running mongoose version %s', mongoose.version); + +/** + * Console schema + */ + +var consoleSchema = Schema({ + name: String, + manufacturer: String, + released: Date +}); +var Console = mongoose.model('Console', consoleSchema); + +/** + * Game schema + */ + +var gameSchema = Schema({ + name: String, + developer: String, + released: Date, + consoles: [{ + type: Schema.Types.ObjectId, + ref: 'Console' + }] +}); +var Game = mongoose.model('Game', gameSchema); + +/** + * Connect to the console database on localhost with + * the default port (27017) + */ + +mongoose.connect('mongodb://localhost/console', function(err) { + // if we failed to connect, abort + if (err) throw err; + + // we connected ok + createData(); +}); + +/** + * Data generation + */ + +function createData() { + Console.create( + { + name: 'Nintendo 64', + manufacturer: 'Nintendo', + released: 'September 29, 1996' + }, + function(err, nintendo64) { + if (err) return done(err); + + Game.create({ + name: 'Legend of Zelda: Ocarina of Time', + developer: 'Nintendo', + released: new Date('November 21, 1998'), + consoles: [nintendo64] + }, + function(err) { + if (err) return done(err); + example(); + }); + } + ); +} + +/** + * Population + */ + +function example() { + Game + .findOne({name: /^Legend of Zelda/}) + .exec(function(err, ocinara) { + if (err) return done(err); + + console.log('"%s" console _id: %s', ocinara.name, ocinara.consoles[0]); + + // population of existing document + ocinara.populate('consoles', function(err) { + if (err) return done(err); + + console.log( + '"%s" was released for the %s on %s', + ocinara.name, + ocinara.consoles[0].name, + ocinara.released.toLocaleDateString() + ); + + done(); + }); + }); +} + +function done(err) { + if (err) console.error(err); + Console.remove(function() { + Game.remove(function() { + mongoose.disconnect(); + }); + }); +} |