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: []
}]
});