Mongoose.js: Wie kann ich ein tief eingebettetes Dokument mit seiner ID aktualisieren?
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
?
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?