2016-09-29 103 views
1

試圖更新數組中的對象。帶保存的貓鼬更新子文檔不起作用

我的代碼:

module.exports = (req, res) => { 

    var givenProject = req.body; 
    var query = mongoose.model('cv').findOne({alias: req.params.alias}); 

    query.exec(function(err, cv){ 
    if(err){ 
     res.status(400).send({message: 'Could not find cv with alias: ' + req.params.alias, err: err}) 
    } 
    var doc = cv.projects.id(req.params.id); 
    doc.langTitles = givenProject.langTitles; 
    doc.langDescriptions = givenProject.langDescriptions; 
    doc.save(function(err){ 
     if(err){ 
     res.status(400).send({message: 'Could not update project', err: err}); 
     return; 
     } 
     res.status(200).send(); 
    }); 
    }); 
}; 

,不會出現錯誤。發現var doc,並且發佈的數據具有與doc相同的數據結構,並且它不同於原始數據。

文檔未更新。我在這裏錯過了什麼?

+0

什麼是線'VAR DOC = cv.projects.id(req.params.id)後的文檔替換

doc.save(function(err) ... 

;'?什麼是'cv.projects'? cv.projects.id是一個函數嗎? – marekful

+0

它是一個內置的貓鼬函數來查找子文檔。 http://mongoosejs.com/docs/subdocs.html – Per

回答

0

根據貓鼬docs

子文檔享受所有相同的功能,正常的文件。該 唯一的區別是是t 哎不單獨保存他們只要其頂級父文檔保存保存

因此嘗試用

cv.save(function(err) ...