diff options
author | lizi00164331 <li.zi30@zte.com.cn> | 2017-08-07 11:39:39 +0800 |
---|---|---|
committer | lizi00164331 <li.zi30@zte.com.cn> | 2017-08-07 11:39:39 +0800 |
commit | 21d72c4a80fe2937d0c4ddd20624b27adbcd989b (patch) | |
tree | e5013ee12f74f8452e01cbff16e7b0158bc456cb /common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/population/population-across-three-collections.js | |
parent | f533e73e2ae32e010b16abdcf7985abaf31ab843 (diff) |
Upload the ESR GUI seed code
Issue-ID: AAI-68
Change-Id: Ia50ce0570c2fabecd77199d4e8454f56fe587c4e
Signed-off-by: lizi00164331 <li.zi30@zte.com.cn>
Diffstat (limited to 'common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/population/population-across-three-collections.js')
-rw-r--r-- | common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/population/population-across-three-collections.js | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/population/population-across-three-collections.js b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/population/population-across-three-collections.js new file mode 100644 index 0000000..fe6de72 --- /dev/null +++ b/common/src/main/webapp/usageguide/appserver/node_modules/mongoose/examples/population/population-across-three-collections.js @@ -0,0 +1,134 @@ + +var assert = require('assert'); +var mongoose = require('../../lib'); +var Schema = mongoose.Schema; +var ObjectId = mongoose.Types.ObjectId; + +/** + * Connect to the db + */ + +var dbname = 'testing_populateAdInfinitum_' + require('../../lib/utils').random(); +mongoose.connect('localhost', dbname); +mongoose.connection.on('error', function() { + console.error('connection error', arguments); +}); + +/** + * Schemas + */ + +var user = new Schema({ + name: String, + friends: [{ + type: Schema.ObjectId, + ref: 'User' + }] +}); +var User = mongoose.model('User', user); + +var blogpost = Schema({ + title: String, + tags: [String], + author: { + type: Schema.ObjectId, + ref: 'User' + } +}); +var BlogPost = mongoose.model('BlogPost', blogpost); + +/** + * example + */ + +mongoose.connection.on('open', function() { + /** + * Generate data + */ + + var userIds = [new ObjectId, new ObjectId, new ObjectId, new ObjectId]; + var users = []; + + users.push({ + _id: userIds[0], + name: 'mary', + friends: [userIds[1], userIds[2], userIds[3]] + }); + users.push({ + _id: userIds[1], + name: 'bob', + friends: [userIds[0], userIds[2], userIds[3]] + }); + users.push({ + _id: userIds[2], + name: 'joe', + friends: [userIds[0], userIds[1], userIds[3]] + }); + users.push({ + _id: userIds[3], + name: 'sally', + friends: [userIds[0], userIds[1], userIds[2]] + }); + + User.create(users, function(err) { + assert.ifError(err); + + var blogposts = []; + blogposts.push({ + title: 'blog 1', + tags: ['fun', 'cool'], + author: userIds[3] + }); + blogposts.push({ + title: 'blog 2', + tags: ['cool'], + author: userIds[1] + }); + blogposts.push({ + title: 'blog 3', + tags: ['fun', 'odd'], + author: userIds[2] + }); + + BlogPost.create(blogposts, function(err) { + assert.ifError(err); + + /** + * Population + */ + + BlogPost + .find({tags: 'fun'}) + .lean() + .populate('author') + .exec(function(err, docs) { + assert.ifError(err); + + /** + * Populate the populated documents + */ + + var opts = { + path: 'author.friends', + select: 'name', + options: {limit: 2} + }; + + BlogPost.populate(docs, opts, function(err, docs) { + assert.ifError(err); + console.log('populated'); + var s = require('util').inspect(docs, {depth: null, colors: true}); + console.log(s); + done(); + }); + }); + }); + }); +}); + +function done(err) { + if (err) console.error(err.stack); + mongoose.connection.db.dropDatabase(function() { + mongoose.connection.close(); + }); +} |