Mongodb/mongoose populate

Par brokleen, il y a 9 ans


Javascript NodeJS

Hello,
J'ai suivis l'example suivant de la documentation de mongoose pour la partie Population :

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);

Et pour la création :

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! }); });

Quand je regarde les donées enregistrées dans le document Person la clé stories est un tableau vide, pourquoi ?
La clé stories ne devrait elle pas contenir un tableau avec les ObjectIds des stories appartenant à Person ?

{ "_id": 0, "name": "Aaron", "age": 100, "stories": [], "__v": 0 }

1 réponse

brokleen, il y a 9 ans

J'ai trouvé la solution, il faut push story1 dans la clé stories

aaron.stories.push(story1); aaron.save(callback);