Du bör bygga ett nytt objekt när du deklarerar din inbäddade CollectPoint
objekt :
var data = new CollectPoint({
name: "Level 1",
collectPoints: [
new CollectPoint({
name: "Level 1.1",
collectPoints: []
})
]
});
På detta sätt _id
och collectPoints
kommer att skapas med hjälp av CollectPoint
annars skapar du bara ett vanligt JSONObject.
För att undvika den typen av problem, bygg en validator för din array som kommer att utlösa ett fel om dess objekt har fel 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'
}
}
});
På så sätt kommer följande att utlösa ett fel:
var data = new CollectPoint({
name: "Level 1",
collectPoints: [{
name: "Level 1.1",
collectPoints: []
}]
});