Трябва да изградите нов обект, когато декларирате своя вграден CollectPoint
елементи:
var data = new CollectPoint({
name: "Level 1",
collectPoints: [
new CollectPoint({
name: "Level 1.1",
collectPoints: []
})
]
});
По този начин _id
и collectPoints
ще бъде създаден чрез екземпляр на CollectPoint
в противен случай просто създавате обикновен JSONObject.
За да избегнете подобни проблеми, създайте валидатор за вашия масив, който ще задейства грешка, ако елементите му имат грешен тип:
var CollectPointSchema = new mongoose.Schema({
name: { type: String },
collectPoints: {
type: [this],
validate: {
validator: function(v) {
if (!Array.isArray(v)) return false
for (var i = 0; i < v.length; i++) {
if (!(v[i] instanceof CollectPoint)) {
return false;
}
}
return true;
},
message: 'bad collect point format'
}
}
});
По този начин следното ще задейства грешка:
var data = new CollectPoint({
name: "Level 1",
collectPoints: [{
name: "Level 1.1",
collectPoints: []
}]
});