Mongoose.js仅在定义/更改时更新单个属性

只有定义属性“头像”,我该如何去改变?

update: function(req, res){ Student.findOneAndUpdate({ _id: req.params.id }, { first_name : req.body.first_name, last_name : req.body.last_name, _school : req.body._school, _teacher : req.body._teacher, grade : req.body.grade, language : req.body.language, avatar : avatar, address : req.body.address, city : req.body.city, state : req.body.state, zip : req.body.zip, _guardians : req.body._guardians, updated_at : req.body.updated_at, active : req.body.active }, function(err, student){ if(err) res.render('error', { error: 'Error updating student'}); res.redirect('/admin/students'); }); } 

我正在寻找这样的东西:var avatar = req.file? req.file.fieldname:user.avatar;

然后使用更新参数“findOneAndUpdate”中的var头像

任何帮助将不胜感激!

谢谢!

我不知道你的应用程序或其逻辑,所以我不知道你想如何parsing和定义头像,所以这取决于你(它可以类似于你发布的)。

但除此之外,你可以做一些简单的事情。

 update: function(req, res){ var options = { first_name : req.body.first_name, last_name : req.body.last_name, _school : req.body._school, _teacher : req.body._teacher, grade : req.body.grade, language : req.body.language, address : req.body.address, city : req.body.city, state : req.body.state, zip : req.body.zip, _guardians : req.body._guardians, updated_at : req.body.updated_at, active : req.body.active } if (avatar) { options.avatar = avatar; } Student.findOneAndUpdate({ _id: req.params.id }, options, function(err, student){ if(err) res.render('error', { error: 'Error updating student'}); res.redirect('/admin/students'); }); }