递归模型上猫鼬虚拟中的循环引用

问题描述

我有一个名为 buildingSchema 的架构

const buildingSchema = new Schema({
    'identifier': { type: String,required: true,index: { unique: true } },'name': { type: String },'parent': { type: Schema.ObjectId,ref: 'Building' },}

正如您看到的架构是递归的,建筑物可以将其他建筑物作为子建筑物,并将另一建筑物作为父建筑物。

我需要在每个建筑物中嵌入一个孩子列表,作为虚拟对象以及所有父母。我尝试添加虚拟 buildingsparentBuilding 并填充它们:

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,});

buildingsparentBuilding 虚拟机本身按预期工作。但是当我添加并填充两个虚拟机时,我的服务器由于循环引用而冻结。

理想情况下,我想为 parentBuilding 虚拟完全禁用 buildings 虚拟,反之亦然。这可能吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)