埋め込まれたCollectPoint
を宣言するときは、新しいオブジェクトを作成する必要があります アイテム:
var data = new CollectPoint({
name: "Level 1",
collectPoints: [
new CollectPoint({
name: "Level 1.1",
collectPoints: []
})
]
});
このように_id
およびcollectPoints
CollectPoint
のインスタンス化によって作成されます それ以外の場合は、プレーンなJSONObjectを作成するだけです。
この種の問題を回避するには、バリデーター を作成します。 アイテムのタイプが間違っている場合にエラーをトリガーする配列の場合:
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'
}
}
});
このようにすると、次のエラーが発生します:
var data = new CollectPoint({
name: "Level 1",
collectPoints: [{
name: "Level 1.1",
collectPoints: []
}]
});