猫鼬保存功能不保存修改

时间:2015-09-24 19:11:49

标签: node.js mongodb mongoose

我正在尝试修改Mongoose中的文档,但这些更改似乎并没有保存。函数本身肯定被调用,每次错误都为null。记录ID被推送到阵列之前和之后所做的更改表明它已被添加,但它没有保存。

function(req, res) {
  var id = req.user._id;
  Moment.findOne({ _id: req.body.moment._id }, function (err, moment) {
    moment.comments[req.body.index].likes.push(id);
    moment.save(function(err) {
      console.log('saved');
      if (err) console.log(err);
        res.json(moment);
      });
    }
  })
};

模式

var MomentSchema = new Schema({
  name: {
    type: String,
    trim: true,
    default: '',
    required: true
  },
  username: {
    type: String,
    required: true
  },
  startTime: {
    type: Date,
    trim: true,
    required: true
  },
  endTime: {
    type: Date,
    trim: true,
    required: true
  },
  comments: {
    type: Array
  }
});

1 个答案:

答案 0 :(得分:0)

您的查询错误。您必须从给定的id创建一个Mongo ObjectId。尝试

var ObjectId = require('mongoose').Types.ObjectId;

Moment.findOne({_id: new ObjectId(req.body.moment._id)}, function(err, moment) ....

在您的查询中,MongoDB找不到与您的查询匹配的文档。这不会引发错误,但您将收到一个空对象。