Vous devez créer un nouvel objet lors de la déclaration de votre CollectPoint
intégré articles :
var data = new CollectPoint({
name: "Level 1",
collectPoints: [
new CollectPoint({
name: "Level 1.1",
collectPoints: []
})
]
});
De cette façon, le _id
et collectPoints
sera créé par l'instanciation de CollectPoint
sinon, vous créez simplement un JSONObject.
Pour éviter ce genre de problèmes, créez un validateur pour votre tableau qui déclenchera une erreur si ses éléments ont un mauvais 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'
}
}
});
Ainsi, ce qui suit déclenchera une erreur :
var data = new CollectPoint({
name: "Level 1",
collectPoints: [{
name: "Level 1.1",
collectPoints: []
}]
});