Du bør bygge et nyt objekt, når du erklærer dit indlejrede CollectPoint elementer:
var data = new CollectPoint({
name: "Level 1",
collectPoints: [
new CollectPoint({
name: "Level 1.1",
collectPoints: []
})
]
});
På denne måde er _id og collectPoints vil blive oprettet ved hjælp af CollectPoint ellers opretter du bare et almindeligt JSONObject.
For at undgå den slags problemer skal du bygge en validator for dit array, der vil udløse en fejl, hvis dets elementer har forkert type :
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'
}
}
});
På denne måde vil følgende udløse en fejl :
var data = new CollectPoint({
name: "Level 1",
collectPoints: [{
name: "Level 1.1",
collectPoints: []
}]
});