Mongoose.js: Как я могу обновить глубокий встроенный документ по его идентификатору?

StackOverflow https://stackoverflow.com/questions/9300098

Вопрос

Как я могу обновить встроенный документ, который на глубине более одного уровня, используя _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!      
});

Я понял это, следуя совету в выбранном ответе в этом посте:Как обновить встроенный документ в монгузе?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top