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

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

1 Ответ

2 голосов
/ 16 февраля 2012

Хорошо, я думаю, что только что понял. Забавно, как это всегда происходит сразу после публикации в SO:)

Вот что я сделал, дайте мне знать, если есть какой-то лучший / другой способ:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...