252cc5374d04ff5beda943c3f9130af4f1df95b9
[aai/esr-gui.git] /
1
2 var mongoose = require('../../lib');
3 var Schema = mongoose.Schema;
4
5 console.log('Running mongoose version %s', mongoose.version);
6
7 /**
8  * Console schema
9  */
10
11 var consoleSchema = Schema({
12   name: String,
13   manufacturer: String,
14   released: Date
15 });
16 var Console = mongoose.model('Console', consoleSchema);
17
18 /**
19  * Game schema
20  */
21
22 var gameSchema = Schema({
23   name: String,
24   developer: String,
25   released: Date,
26   consoles: [{
27     type: Schema.Types.ObjectId,
28     ref: 'Console'
29   }]
30 });
31 var Game = mongoose.model('Game', gameSchema);
32
33 /**
34  * Connect to the console database on localhost with
35  * the default port (27017)
36  */
37
38 mongoose.connect('mongodb://localhost/console', function(err) {
39   // if we failed to connect, abort
40   if (err) throw err;
41
42   // we connected ok
43   createData();
44 });
45
46 /**
47  * Data generation
48  */
49
50 function createData() {
51   Console.create(
52     {
53       name: 'Nintendo 64',
54       manufacturer: 'Nintendo',
55       released: 'September 29, 1996'
56     },
57     function(err, nintendo64) {
58       if (err) return done(err);
59
60       Game.create({
61         name: 'Legend of Zelda: Ocarina of Time',
62         developer: 'Nintendo',
63         released: new Date('November 21, 1998'),
64         consoles: [nintendo64]
65       },
66       function(err) {
67         if (err) return done(err);
68         example();
69       });
70     }
71   );
72 }
73
74 /**
75  * Population
76  */
77
78 function example() {
79   Game
80   .findOne({name: /^Legend of Zelda/})
81   .populate('consoles')
82   .exec(function(err, ocinara) {
83     if (err) return done(err);
84
85     console.log(
86       '"%s" was released for the %s on %s',
87       ocinara.name,
88       ocinara.consoles[0].name,
89       ocinara.released.toLocaleDateString()
90     );
91
92     done();
93   });
94 }
95
96 function done(err) {
97   if (err) console.error(err);
98   Console.remove(function() {
99     Game.remove(function() {
100       mongoose.disconnect();
101     });
102   });
103 }