我想存储以下内容:
var TestSchema = new Schema({
name: {
type: String
},
regions: [RegionSchema]
}
var RegionSchema = new Schema({
name: {
type: String
},
minX: {
type: Number
},
minY: {
type: Number
},
minZ: {
type: Number
},
maxX: {
type: Number
},
maxY: {
type: Number
},
maxZ: {
type: Number
},
children: [this]
});
因为你可以看到我正在尝试创建一个区域对象,能够包含区域对象,但是这无法保存,无一例外,可能是模式中的[this]卡在某些无限循环中。 / p>
如何使其适用于嵌套区域?
我可以期望发送到此架构的json有效负载:
name: "test123",
regions: [
{
name: "TestRegion",
minX: 0,
minY: 0,
minZ: 0,
maxX: 100,
maxY: 255,
maxZ: 100,
children: [
{
name: "TestRegionChild",
minX: 3,
minY: 3,
minZ: 3,
maxX: 97,
maxY: 252,
maxZ: 97,
children: []
}
]
}
]
感谢您的帮助,谢谢。
答案 0 :(得分:1)
如果先保存其他区域,可以将子项保存为objectIds列表,如下所示:
children: [{
type: Schema.ObjectId,
ref: 'Region'
}]
另一个选择是重新设计您的架构,并让父母有一个'在您所在的地区,并删除“孩子们”'领域。然后当你需要得到所有的孩子时,你可以轻松查询而不是拥有大的嵌套对象。
var RegionSchema = new Schema({
--- other fields omitted ---
parent: {
type: Schema.ObjectId,
ref: 'Region'
}
});