Bạn nên tạo một đối tượng mới khi khai báo CollectPoint
được nhúng của bạn mặt hàng:
var data = new CollectPoint({
name: "Level 1",
collectPoints: [
new CollectPoint({
name: "Level 1.1",
collectPoints: []
})
]
});
Bằng cách này, _id
và collectPoints
sẽ được tạo bằng cách cài đặt CollectPoint
nếu không, bạn chỉ đang tạo một JSONObject thuần túy.
Để tránh những loại vấn đề đó, hãy xây dựng trình xác thực cho mảng của bạn sẽ gây ra lỗi nếu các mục của nó có loại sai:
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'
}
}
});
Bằng cách này, điều sau sẽ gây ra lỗi:
var data = new CollectPoint({
name: "Level 1",
collectPoints: [{
name: "Level 1.1",
collectPoints: []
}]
});