Mongoose.js: Come posso aggiornare un documento profonda incorporato dal suo id?
Domanda
Come posso aggiornare un documento incorporato che è più di un livello profondo utilizzando la _id
della voce desidero aggiornamento?
Per esempio, se ho il seguente nel mio file di modello:
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);
Come potrei fare per aggiornare il body
di uno dei miei subitems
dove so che il _id
dell'elemento subitems
?
presumo Desidero in primo luogo trovare il progetto (abbastanza facile), e poi spingere al subitems
e salvare il progetto. Quindi la domanda è, come si fa a spingere ad un più di un livello profondo incorporare senza dover iterare attraverso tutto ciò sopra di esso? Posso farlo per la sua _id
?
Soluzione
Ok, penso che ho appena capito. Divertente come succede sempre a destra dopo annuncio a SO:)
Ecco quello che ho fatto, me lo faccia sapere se c'è un modo migliore / diverso:
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!
});
ho capito seguendo i consigli della risposta selezionata in questo post SO: Come aggiornare documento incorporato nella mangusta?