Mongoose.js: Comment puis-je mettre à jour un document profondément intégré par son id?

StackOverflow https://stackoverflow.com/questions/9300098

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?

Était-ce utile?

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?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top