2016-09-29 175 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) ...