Javascript TypeORM关系只返回id
我不熟悉打字,所以这可能是一个简单的问题,但我制作了两个实体,具有一对一和多对一的关系,如下所示:Javascript TypeORM关系只返回id,javascript,typescript,orm,nestjs,typeorm,Javascript,Typescript,Orm,Nestjs,Typeorm,我不熟悉打字,所以这可能是一个简单的问题,但我制作了两个实体,具有一对一和多对一的关系,如下所示: @实体(“用户”) 导出类用户实体{ //我遗漏了其他领域 @独身癖( ()=>ConfigurationEntity, (配置)=>configuration.createdBy, {nullable:true,cascade:true,eager:true}, ) CreatedConfiguration?:配置实体[]; } @实体(“配置”) 导出类配置实体{ @多通(()=>UserE
@实体(“用户”)
导出类用户实体{
//我遗漏了其他领域
@独身癖(
()=>ConfigurationEntity,
(配置)=>configuration.createdBy,
{nullable:true,cascade:true,eager:true},
)
CreatedConfiguration?:配置实体[];
}
@实体(“配置”)
导出类配置实体{
@多通(()=>UserEntity,(user)=>user.createdConfiguration)
createdBy:UserEntity;
}
创建配置时,我通过将ConfigurationEntity添加到UserEntity来保存配置,然后像这样保存UserEntity:
异步createConfiguration(configurationDto:configurationDto,userEntity:userEntity){
让configurationEntity=新的configurationEntity();
configurationEntity.createdBy=userEntity;
//这里我设置了我遗漏的configurationEntity的一些其他值
// ....
如果(!userEntity.createdConfiguration){
userEntity.CreatedConfiguration=[];
}
userEntity.CreatedConfiguration.push(configurationEntity);
等待这个.userRepository.save(userEntity);
configurationEntity.createdBy=未定义;
返回配置实体;
}
一切似乎都很好,当我保存它时,它实际上保存得很好。
我遇到的问题是,当我试图找到一个用户并查看CreatedConfiguration时,我只有一个配置id的列表。我希望看到完整的ConfigurationEntity(由于循环引用而没有createdBy)。我怎样才能做到这一点
实际:
{
id:1,
CreatedConfiguration:[{id:3},{id:4}]
}
预期:
{
id:1,
CreatedConfiguration:[{id:3,品牌:'Mercedes',…},{id:4,品牌:'Kia',…}]
}
我发现了问题所在。这与迫不及待的选择有关。
我的配置实体如下所示:
@实体(“配置”)
导出类配置实体{
@PrimaryGeneratedColumn()
id:编号;
@OneTONE(()=>ConfigurationBasicInfentity,{cascade:true})
@JoinColumn()
基本信息:配置基本信息;
@OneTONE(()=>配置颜色内饰{
答:是的,
})
@JoinColumn()
颜色内饰信息:配置颜色内饰实体;
@OneToOne(()=>ConfigurationFinanceEntity,{cascade:true})
@JoinColumn()
财务信息:配置财务实体;
@OneToOne(()=>ConfigurationContactEntity,{cascade:true})
@JoinColumn()
contactInfo:ConfigurationContactEntity;
@多通(()=>UserEntity,(user)=>user.createdConfiguration)
createdBy:UserEntity;
}
我必须在我的实体的选项中添加eager:true,以便像这样加载它们:
@实体(“配置”)
导出类配置实体{
@PrimaryGeneratedColumn()
id:编号;
@OneToOne(()=>ConfigurationBasicFontity,{cascade:true,eager:true})
@JoinColumn()
基本信息:配置基本信息;
@OneTONE(()=>配置颜色内饰{
答:是的,
是的,
})
@JoinColumn()
颜色内饰信息:配置颜色内饰实体;
@OneToOne(()=>ConfigurationFinanceEntity,{cascade:true,eager:true})
@JoinColumn()
财务信息:配置财务实体;
@OneToOne(()=>ConfigurationContactEntity,{cascade:true,eager:true})
@JoinColumn()
contactInfo:ConfigurationContactEntity;
@多通(()=>UserEntity,(user)=>user.createdConfiguration)
createdBy:UserEntity;
}
看起来有点像:而且您还没有在CreatedConfiguration
entity@omidh我忽略了这一点,因为它对解决我的问题并没有真正的用处,但我确实有一个专栏品牌(还有更多)。