Mongoose Schema Type String无法正常工作

时间:2016-06-05 18:22:53

标签: node.js mongodb mongoose

我正在更新我的数据库,但我无法理解下面的架构发生了什么:

{ 
  ref             : String,
  event           : {
    name          : String,
    data          : mongoose.Schema.Types.Mixed,
    type          : mongoose.Schema.Types.Mixed, // Declaring this as String makes parent(event) undefined. 
  }
}

event.type的输入数据是字符串,但当我这样声明时,所有现有和新文档的event字段都变为undefined

即。在Main Function (below)我得到Cannot set property 'type' of undefined

// Main function
model
  .find({ 'event.type' : { $exists: false }})
  .exec(function(err, data) {
    if (err) return console.log(err);

    for (var i = 0, len = data.length; i<len; i++) {
      data[i].event.type = data[i].ref; // <-- Error Occurs here: Cannot set property 'type' of undefined
      data[i].save()
    }
  })

愿意获得一些见解。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

属性type在Mongoose中具有特殊含义。

如果您想将它用作架构中的属性名称,您需要告诉Mongoose不要将其视为特殊:

var schema = new Schema({ 
  ref   : String,
  event : {
    name : String,
    data : mongoose.Schema.Types.Mixed,
    type : String,
  }
}, { typeKey : '$type' });

更多信息here;