Dovresti creare un nuovo oggetto quando dichiari il tuo CollectPoint
incorporato articoli :
var data = new CollectPoint({
name: "Level 1",
collectPoints: [
new CollectPoint({
name: "Level 1.1",
collectPoints: []
})
]
});
In questo modo il _id
e collectPoints
sarà creato dall'istanza di CollectPoint
in caso contrario, stai semplicemente creando un semplice JSONObject.
Per evitare questo tipo di problemi, crea un validator per il tuo array che attiverà un errore se i suoi elementi hanno un tipo errato:
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'
}
}
});
In questo modo si attiverà un errore:
var data = new CollectPoint({
name: "Level 1",
collectPoints: [{
name: "Level 1.1",
collectPoints: []
}]
});