Mongoose.js: Comment puis-je mettre à jour un document profondément intégré par son id?
Question
Comment puis-je mettre à jour un document intégré qui est plus d'un niveau profond en utilisant le _id
de l'article que je souhaite à jour?
Par exemple, si je suit dans mon fichier modèle:
var Subitems = new Schema({
"title": String,
"body": String
)}
var Items = new Schema({
"title": String,
"subitems": [Subitems]
)};
var Projects = new Schema({
"title": String,
"description": String,
"items": [Items]
});
var exports = module.exports = mongoose.model('Project', Projects);
Comment pourrais-je aller sur la mise à jour du body
d'un de mes subitems
où je connais le _id
de l'élément subitems
?
Je suppose que je voudrais tout d'abord trouver le projet (assez facile), puis pousser la subitems
et enregistrez le projet. La question est, comment voulez-vous pousser à un plus d'un niveau profond sans avoir à intégrer itérer à travers tout dessus? Puis-je le faire par son _id
?
La solution
Ok, je crois que je viens tout compris. Drôle comment cela se passe toujours juste après l'affichage de SO:)
Voici ce que je l'ai fait, laissez-moi savoir s'il y a une meilleure / différente façon:
var myitem = req.project.items.id(item_id);
myitem.body = req.body.item.body;
req.project.save(function (err){
//woohoo! updated the embedded doc with the new values!
});
je me suis dit qu'il en suivant les conseils donnés dans la réponse choisie dans ce SO message: Comment mettre à jour le document intégré dans mangouste?