Você deve construir um novo objeto ao declarar seu
CollectPoint
incorporado Unid :var data = new CollectPoint({
name: "Level 1",
collectPoints: [
new CollectPoint({
name: "Level 1.1",
collectPoints: []
})
]
});
Desta forma, o
_id
e collectPoints
será criado pela instanciação de CollectPoint
caso contrário, você está apenas criando um JSONObject simples. Para evitar esse tipo de problema, crie um validador para sua matriz que acionará um erro se seus itens tiverem o tipo errado:
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'
}
}
});
Desta forma, o seguinte irá acionar um erro:
var data = new CollectPoint({
name: "Level 1",
collectPoints: [{
name: "Level 1.1",
collectPoints: []
}]
});