Při deklaraci vloženého CollectPoint
byste měli vytvořit nový objekt položky :
var data = new CollectPoint({
name: "Level 1",
collectPoints: [
new CollectPoint({
name: "Level 1.1",
collectPoints: []
})
]
});
Tímto způsobem _id
a collectPoints
bude vytvořeno instancí CollectPoint
jinak právě vytváříte prostý JSONObject.
Chcete-li se těmto problémům vyhnout, vytvořte si validátor pro vaše pole, které spustí chybu, pokud jeho položky mají nesprávný typ:
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'
}
}
});
Tímto způsobem dojde k chybě:
var data = new CollectPoint({
name: "Level 1",
collectPoints: [{
name: "Level 1.1",
collectPoints: []
}]
});