Node.js Mongoose保存失败

Node.js Mongoose保存失败,node.js,mongoose,Node.js,Mongoose,我有以下代码: balanceModel.findOne({year: parseInt(req.params.year)},function(err,data){ data.months['weirdber'] = { x: 'y' }; data.save(function(e,d){ console.dir(e); res.json(d); }); }); null在我调用它时被打印出来,所以肯定不会抛出错误

我有以下代码:

balanceModel.findOne({year: parseInt(req.params.year)},function(err,data){

   data.months['weirdber'] = {
       x: 'y'
   };

    data.save(function(e,d){
        console.dir(e);
        res.json(d);
    });

});
null
在我调用它时被打印出来,所以肯定不会抛出错误

回调的
d
参数包含正确的数据,包括新添加的属性

但是,当我稍后检索集合时,在
年中没有属性
1999

我绝对确信我以后不会检索到错误的集合

这是我的模式,我把它从一个包含嵌套模式的完整模式缩减到这个,让我们称之为超级简单,以避免不好的单词,等等。仍然不起作用

var mongoose     = require('mongoose');
var Schema       = mongoose.Schema;

var BalanceSchema = new Schema({
    year: Number,
    months: Object
});

module.exports = mongoose.model('Balance', BalanceSchema);

这是怎么回事?

见鬼,我是想写
false
。无论如何,我已经更新了这个问题。没有错误。以上只是一个简单的解释。真正的代码当然不仅仅是日志
!!e
完成。如果您能为这个问题推荐一个模式,我将非常高兴。我快发疯了,看起来像个傻瓜。但最好是将
months
设置为一个数组,以防止数据进入对象键。但是,我发现如果可以通过名称检索所需月份会很方便,因为这是传递给REST API的内容。在查询时,您仍然可以使用
$
$elemMatch
投影操作符使用数组来实现这一点。看见