Mongoose populate after save
mongodb, mongoose, node.js, populate
Solution
You should be able to use the Model's populate function to do this: http://mongoosejs.com/docs/api.html#model_Model.populate In the save handler for book, instead of:
book._creator = user;
you'd do something like:
Book.populate(book, {path:"_creator"}, function(err, book) { ... });
Probably too late an answer to help you, but I was stuck on this recently, and it might be useful for others.
Problem
I cannot manually or automatically populate the creator field on a newly saved object ... the only way I can find is to re-query for the objects I already have which I would hate to do. This is the setup: ``` var userSchema = new mongoose.Schema({ name: String, }); var User = db.model('User', userSchema); var bookSchema = new mongoose.Schema({ _creator: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }, description: String, }); var Book = db.model('Book', bookSchema); ``` This is where I am pulling my hair ``` var user = new User(); user.save(function(err) { var book = new Book({ _creator: user, }); book.save(function(err){ console.log(book._creator); // is just an object id book._creator = user; // still only attaches the object id due to Mongoose magic console.log(book._creator); // Again: is just an object id // I really want book._creator to be a user without having to go back to the db ... any suggestions? }); }); ``` EDIT: latest mongoose fixed this issue and added populate functionality, see the new accepted answer.