Mongoose.js: Как я могу обновить глубокий встроенный документ по его идентификатору?
Вопрос
Как я могу обновить встроенный документ, который на глубине более одного уровня, используя _id
из пункта, который я хочу обновить?
Например, если у меня есть следующее в моем модельном файле:
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);
Как мне обновить body
одного из моих subitems
где я знаю _id
принадлежащий subitems
элемент?
Я предполагаю, что сначала найду проект (достаточно просто), а затем подтолкнул к subitems
и сохранить проект. Таким образом, вопрос в том, как вы подталкиваете к более чем одному уровню глубоко встроить без необходимости переходить через все над ним? Могу я сделать это по его _id
?
Решение
Хорошо, я думаю, я только что понял это. Забавно, как это всегда происходит сразу после публикации так :)
Вот что я сделал, дайте мне знать, если есть какой -либо лучше/другой способ:
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!
});
Я понял это, следуя совету в выбранном ответе в этом посте:Как обновить встроенный документ в монгузе?