Anda harus membuat objek baru saat mendeklarasikan CollectPoint
yang disematkan barang :
var data = new CollectPoint({
name: "Level 1",
collectPoints: [
new CollectPoint({
name: "Level 1.1",
collectPoints: []
})
]
});
Dengan cara ini _id
dan collectPoints
akan dibuat oleh instance CollectPoint
jika tidak, Anda hanya membuat objek JSONO biasa.
Untuk menghindari masalah seperti itu, buat validator untuk array Anda yang akan memicu kesalahan jika itemnya salah ketik :
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'
}
}
});
Dengan cara berikut ini akan memicu kesalahan:
var data = new CollectPoint({
name: "Level 1",
collectPoints: [{
name: "Level 1.1",
collectPoints: []
}]
});