我正在更新我的数据库,但我无法理解下面的架构发生了什么:
{
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()
}
})
愿意获得一些见解。任何帮助表示赞赏!
答案 0 :(得分:0)
属性type
在Mongoose中具有特殊含义。
如果您想将它用作架构中的属性名称,您需要告诉Mongoose不要将其视为特殊:
var schema = new Schema({
ref : String,
event : {
name : String,
data : mongoose.Schema.Types.Mixed,
type : String,
}
}, { typeKey : '$type' });
更多信息here;