Powinieneś zbudować nowy obiekt, kiedy deklarujesz swój osadzony CollectPoint
przedmioty :
var data = new CollectPoint({
name: "Level 1",
collectPoints: [
new CollectPoint({
name: "Level 1.1",
collectPoints: []
})
]
});
W ten sposób _id
i collectPoints
zostanie utworzony przez instancję CollectPoint
w przeciwnym razie tworzysz zwykły obiekt JSONObject.
Aby uniknąć tego rodzaju problemów, zbuduj walidator dla twojej tablicy, która wywoła błąd, jeśli jej elementy mają niewłaściwy 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'
}
}
});
W ten sposób następujące zdarzenia wywołają błąd:
var data = new CollectPoint({
name: "Level 1",
collectPoints: [{
name: "Level 1.1",
collectPoints: []
}]
});