问题描述
const buildingSchema = new Schema({
'identifier': { type: String,required: true,index: { unique: true } },'name': { type: String },'parent': { type: Schema.ObjectId,ref: 'Building' },}
正如您看到的架构是递归的,建筑物可以将其他建筑物作为子建筑物,并将另一建筑物作为父建筑物。
我需要在每个建筑物中嵌入一个孩子列表,作为虚拟对象以及所有父母。我尝试添加虚拟 buildings
和 parentBuilding
并填充它们:
buildingSchema.pre('find',function() {
this.populate('buildings')
this.populate('parentBuilding')
})
buildingSchema.virtual('buildings',{
ref: 'Building',localField: '_id',foreignField: 'parent',justOne: false,});
buildingSchema.virtual('parentBuilding',localField: 'parent',foreignField: '_id',justOne: true,});
buildings
和 parentBuilding
虚拟机本身按预期工作。但是当我添加并填充两个虚拟机时,我的服务器由于循环引用而冻结。
理想情况下,我想为 parentBuilding
虚拟完全禁用 buildings
虚拟,反之亦然。这可能吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)