thoughts/node_modules/mongoose/examples/population/population-of-multiple-existing-docs.js
node_modules/mongoose/examples/population/population-of-multiple-existing-docs.jsRaw
1
2var mongoose = require('../../lib');
3var Schema = mongoose.Schema;
4
5console.log('Running mongoose version %s', mongoose.version);
6
7/**
8 * Console schema
9 */
10
11var consoleSchema = Schema({
12 name: String,
13 manufacturer: String,
14 released: Date
15});
16var Console = mongoose.model('Console', consoleSchema);
17
18/**
19 * Game schema
20 */
21
22var gameSchema = Schema({
23 name: String,
24 developer: String,
25 released: Date,
26 consoles: [{
27 type: Schema.Types.ObjectId,
28 ref: 'Console'
29 }]
30});
31var Game = mongoose.model('Game', gameSchema);
32
33/**
34 * Connect to the console database on localhost with
35 * the default port (27017)
36 */
37
38mongoose.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
50function createData() {
51 Console.create(
52 {
53 name: 'Nintendo 64',
54 manufacturer: 'Nintendo',
55 released: 'September 29, 1996'
56 },
57 {
58 name: 'Super Nintendo',
59 manufacturer: 'Nintendo',
60 released: 'August 23, 1991'
61 },
62 function(err, nintendo64, superNintendo) {
63 if (err) return done(err);
64
65 Game.create(
66 {
67 name: 'Legend of Zelda: Ocarina of Time',
68 developer: 'Nintendo',
69 released: new Date('November 21, 1998'),
70 consoles: [nintendo64]
71 },
72 {
73 name: 'Mario Kart',
74 developer: 'Nintendo',
75 released: 'September 1, 1992',
76 consoles: [superNintendo]
77 },
78 function(err) {
79 if (err) return done(err);
80 example();
81 }
82 );
83 }
84 );
85}
86
87/**
88 * Population
89 */
90
91function example() {
92 Game
93 .find({})
94 .exec(function(err, games) {
95 if (err) return done(err);
96
97 console.log('found %d games', games.length);
98
99 var options = {path: 'consoles', select: 'name released -_id'};
100 Game.populate(games, options, function(err, games) {
101 if (err) return done(err);
102
103 games.forEach(function(game) {
104 console.log(
105 '"%s" was released for the %s on %s',
106 game.name,
107 game.consoles[0].name,
108 game.released.toLocaleDateString()
109 );
110 });
111
112 done();
113 });
114 });
115}
116
117function done(err) {
118 if (err) console.error(err);
119 Console.remove(function() {
120 Game.remove(function() {
121 mongoose.disconnect();
122 });
123 });
124}