Frage

Wie kann ich ein eingebettetes Dokument aktualisieren, das mehr als eine Ebene tief ist, indem ich die verwendete? _id von dem Artikel, den ich aktualisieren möchte?

Zum Beispiel, wenn ich in meiner Modelldatei Folgendes habe:

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

Wie würde ich das aktualisieren body von einem meiner subitems wo ich das kenne _id des subitems Element?

Ich gehe davon aus subitems und speichern Sie das Projekt. Die Frage ist also, wie Sie auf mehr als eine Stufe tief einbettet werden, ohne alles darüber durchzunehmen? Kann ich es durch seine tun? _id ?

War es hilfreich?

Lösung

Ok, ich glaube, ich habe es gerade herausgefunden. Lustig, wie das immer gleich nach dem Posten zu so passiert :)

Hier ist, was ich getan habe, lassen Sie mich wissen, ob es einen besseren/anderen Weg gibt:

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

Ich habe es herausgefunden, indem ich dem Rat in der ausgewählten Antwort in diesem Beitrag folgt:Wie aktualisiere ich eingebettetes Dokument in Mongoose?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top