【问题标题】:How to perform update in mongoose如何在猫鼬中执行更新
【发布时间】:2016-10-14 18:00:17
【问题描述】:

我正在尝试更新我的记录,但在我的情况下没有发生,我不确定它出错的情况,任何人都可以建议我帮助。谢谢

我的猫鼬代码,

exports.updatestudent = function (req, res) {
var student = new Student(req.body);
var data = {};
var id = req.params;
var params = req.body;
var item = {
    'name': params.name,
    'rollnumber': params.rollnumber,
    'class': params.class,
    'city': params.city
};
Student.update({ _id: id },{ $set: item }, function (err, result) {
    if (err) {
        console.log('err');
    }
    if (result) {
        data = { status: 'success', error_code: 0, result: result, message: 'Article updated successfully' };
        res.json(data);
    }
});

};

我的架构,

  var StudentSchema = new Schema({
  name: {
    type: String
  },
  rollnumber: {
    type: String
  },
  class: {
    type: String
  },
   city: {
    type: String
  },
  status: {
    type: String
  },
  _id: {
    type: Schema.ObjectId
  }
});
/**
 * Hook a pre validate method to test the local password
 */
mongoose.model('student', StudentSchema, 'student');

我在邮递员中的结果, { “状态”:“成功”, “错误代码”:0, “结果”: { “好”:0, “n”:0, “修改”:0 }, "message": "文章更新成功" }

我正在尝试更新我的记录,但在我的情况下没有发生,我不确定它出错的情况,任何人都可以建议我帮助。谢谢

【问题讨论】:

    标签: node.js mongodb mongoose mongoose-schema


    【解决方案1】:

    您似乎忘记指定密钥了。

    替换

    var id = req.params;
    

    var id = req.params.id;
    

    【讨论】:

      【解决方案2】:

      确保您在var id = req.params; 中获取您的id

      我相信你不会像这样得到你的id

      检查您的 req.params; 值并在查询中提供正确的 ID

      更新

      var item = {};
      
      if (params.name) {
        item.name = params.name;
      }
      if (params.rollnumber) {
      
        item.rollnumber = params.rollnumber
      }
      
      
      Student.update({
        _id: id
      }, {
        $set: item
      }, function(err, result) {
        if (err) {
          console.log('err');
        }
        if (result) {
          data = {
            status: 'success',
            error_code: 0,
            result: result,
            message: 'Article updated successfully'
          };
          res.json(data);
        }
      });
      

      【讨论】:

      • 我使用 var id = mongoose.Types.ObjectId(req.params.id);console.log(id) 清除了它
      • 意味着你的 id 来自req.params.id 而不是req.params 更新你的查询,它应该可以工作
      • 好的,但是如果我只在正文中给出名称来更新剩余字段将变为空,我该如何阻止它
      • 在查询前检查你的所有字段,并把if语句不可用的数据放入并跳过
      • 在回答中查看我的更新部分,这样您可以避免 null,您可以找到另一种方法,但似乎很容易处理所有事情
      猜你喜欢
      • 2015-04-05
      • 2012-05-18
      • 1970-01-01
      • 2012-09-30
      • 2012-03-28
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      • 2022-12-05
      相关资源
      最近更新 更多