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

标签 node.js mongodb express mongoose

仅当属性“avatar”已定义时,我该如何更改它?

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 头像 = req.file ? req.file.fieldname : 用户.头像;

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

任何帮助将不胜感激!

谢谢!

最佳答案

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

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

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

关于node.js - Mongoose.js 仅在定义/更改时更新单个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38353221/

相关文章:

javascript - 是否可以将全局范围注入(inject)到 ES6 中的实例化类中,也就是单例?

mongodb - 使用 mongoose 并利用我已经定义的 schmas 在 NestJS 中做种子 mongoDB 的正确方法是什么

mongodb - Grails Mongodb插件无法保存

express - 为什么我的 Electron 事件被延迟到渲染过程?

node.js - React 服务器未启动 - 与 renderProps 有关

javascript - node.js:程序意外退出或挂起

node.js - 在 Windows 中安装 Cordova 时出现错误

javascript - 我可以在 mongoDB 中根据填充条件查找文档吗?

node.js - MongoDB Node.js 模块 'mongo' 未被识别为内部或外部命令

node.js - 我应该使用 Express static dirname 还是使用 Node.js 作为远程服务器?