Sie sollten ein neues Objekt erstellen, wenn Sie Ihren eingebetteten CollectPoint
deklarieren Artikel :
var data = new CollectPoint({
name: "Level 1",
collectPoints: [
new CollectPoint({
name: "Level 1.1",
collectPoints: []
})
]
});
Auf diese Weise die _id
und collectPoints
wird durch die Instanziierung von CollectPoint
erstellt Andernfalls erstellen Sie nur ein einfaches JSONObject.
Um solche Probleme zu vermeiden, erstellen Sie einen Validator für Ihr Array, das einen Fehler auslöst, wenn seine Elemente den falschen Typ haben:
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'
}
}
});
Auf diese Weise wird Folgendes einen Fehler auslösen:
var data = new CollectPoint({
name: "Level 1",
collectPoints: [{
name: "Level 1.1",
collectPoints: []
}]
});