Comment mettre à jour un sous-document Mongoose dans une méthode d’instance?

J’ai un document Mongoose avec un tableau de sous-documents comme celui-ci:

var RegionSchema = new Schema({ "metadata": { "regionType": Ssortingng, "name": Ssortingng, "children": [{ "name": Ssortingng, "childType": Ssortingng, "id": Schema.ObjectId }], "parent": Schema.ObjectId }, "data": [DataContainer] }); 

Dans le schéma DataContainer , je souhaite créer une méthode d’instance pouvant mettre à jour les données à l’intérieur de lui-même.

Par souci de clarté , je souhaite pouvoir rechercher une Region , rechercher un DataContainer à l’intérieur du tableau de data et appeler quelque chose comme dataCont.update() , dans lequel l’occurrence DataContainer peut effectuer this.save() . Est-ce possible?

Faire

 this.save(function(err, saved) { console.log(saved) callback(err, saved); }); 

dans une méthode d’instance DataContainer imprime undefined . Le rappel est touché cependant.

Si la propriété data est un sous-document, vous pouvez facilement utiliser le populate et la mise à jour:

 Region.findOne({ _id: regionId }) .populate('data') .exec(function (err, region) { // ... var data = region.data, // data container dataItem = data[0]; dataItem.property = 'some value'; dataItem.save(function (err, item) { //... }); // or dataItem.update({ $set: { property: 'some value' }}, function (err, item) { // ... }); });