Created
July 14, 2015 17:19
-
-
Save AndyNovo/81800775c699d8779aab to your computer and use it in GitHub Desktop.
Stolen Example of Mongoose Populate
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var mongoose = require('mongoose') | |
, Schema = mongoose.Schema | |
var personSchema = Schema({ | |
_id : Number, | |
name : String, | |
age : Number, | |
stories : [{ type: Schema.Types.ObjectId, ref: 'Story' }] | |
}); | |
var storySchema = Schema({ | |
_creator : { type: Number, ref: 'Person' }, | |
title : String, | |
fans : [{ type: Number, ref: 'Person' }] | |
}); | |
var Story = mongoose.model('Story', storySchema); | |
var Person = mongoose.model('Person', personSchema); | |
var aaron = new Person({ _id: 0, name: 'Aaron', age: 100 }); | |
aaron.save(function (err) { | |
if (err) return handleError(err); | |
var story1 = new Story({ | |
title: "Once upon a timex.", | |
_creator: aaron._id // assign the _id from the person | |
}); | |
story1.save(function (err) { | |
if (err) return handleError(err); | |
// thats it! | |
}); | |
}); | |
Story | |
.findOne({ title: 'Once upon a timex.' }) | |
.populate('_creator') | |
.exec(function (err, story) { | |
if (err) return handleError(err); | |
console.log('The creator is %s', story._creator.name); | |
// prints "The creator is Aaron" | |
}); | |
Story | |
.findOne({ title: /timex/i }) | |
.populate('_creator', 'name') // only return the Persons name | |
.exec(function (err, story) { | |
if (err) return handleError(err); | |
console.log('The creator is %s', story._creator.name); | |
// prints "The creator is Aaron" | |
console.log('The creators age is %s', story._creator.age); | |
// prints "The creators age is null' | |
}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment