【发布时间】:2021-08-09 04:18:06
【问题描述】:
我是 TypeORM 的新手,所以这可能是一个简单的问题,但我已经创建了两个具有 OneToMany 和 ManyToOne 关系的实体,如下所示:
@Entity('user')
export class UserEntity {
// I left out other fields
@OneToMany(
() => ConfigurationEntity,
(configuration) => configuration.createdBy,
{ nullable: true, cascade: true, eager: true },
)
createdConfigurations?: ConfigurationEntity[];
}
@Entity('configurations')
export class ConfigurationEntity {
@ManyToOne(() => UserEntity, (user) => user.createdConfigurations)
createdBy: UserEntity;
}
当我创建配置时,我通过将 ConfigurationEntity 添加到 UserEntity 来保存它,然后像这样保存 UserEntity:
async createConfiguration(configurationDto: ConfigurationDto, userEntity: UserEntity) {
let configurationEntity = new ConfigurationEntity();
configurationEntity.createdBy = userEntity;
// here I set some other values of my configurationEntity which I left out
// ....
if (!userEntity.createdConfigurations) {
userEntity.createdConfigurations = [];
}
userEntity.createdConfigurations.push(configurationEntity);
await this.userRepository.save(userEntity);
configurationEntity.createdBy = undefined;
return configurationEntity;
}
一切看起来都很好,当我保存它时,它实际上保存得很好。 我遇到的问题是,当我尝试查找用户并查看 createdConfigurations 时,我只有一个配置 ID 的列表。我想查看完整的 ConfigurationEntity(由于循环引用而没有 createdBy)。我怎样才能做到这一点?
实际:
{
id: 1,
createdConfigurations: [ { id: 3 }, { id: 4 } ]
}
预期:
{
id: 1,
createdConfigurations: [ { id: 3, brand: 'Mercedes', ... }, { id: 4, brand: 'Kia', ... } ]
}
【问题讨论】:
-
您尚未在
createdConfigurations实体中定义任何名为brand的列 -
@omidh 我把它省略了,因为它对我的问题并没有真正有用,但我确实有一个专栏品牌(等等)。
标签: javascript typescript orm nestjs typeorm