Typeorm 查找查询不返回多对一关系 ID



正如标题所说:

我有一个business-user表和一个business-hours表。CCD_ 3与CCD_ 4具有ManyToOne关系。

business-hours侧的关系定义如下。

@ManyToOne(() => BusinessUser, (businessUser) => businessUser.businessHours)
@JoinColumn()
businessUser: BusinessUser;

Typeorm文档说,这应该在表中创建一个字段businessUserId,它确实这样做了。此外,由于这是主键上的关系,所以我不需要命名或引用它。但是当我执行findfindOne查询时,businessUserId不再返回。当我检查数据库时,字段和值按预期存在,只是它们不会在find查询中返回。早些时候它工作得很好,我得到了所有表的关系表id,但现在它不再工作了。想知道是否有人能帮我,或者弄清楚发生了什么变化。我已经尝试过这里提出的类似问题的解决方案,但没有任何帮助。

有一个"官方的";官方文档上的变通方法。它解释了";如何在不连接关系的情况下使用关系id";。

总之,您只需要向您的实体添加一个myRelationId(在您的情况下,是businessUserId)列(,如下所示(例如(:

@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@Column({ nullable: true })
profileId: number;  // <---------- You'll get only the id from here
@OneToOne(type => Profile)
@JoinColumn()
profile: Profile;  // <----------- You don't want all the data
}

如果你这样做,显然,从你的请求中删除{relations : ["businessUser"]}

您可以尝试设置此loadRelationIds:true

例如,我使用这样的东西:

async findAByConditionWithRelationsOfUser(condition, relations, speaker_id) {  
try {
let data: SentenceEntity[] = await this.sentenceRespository.find({ where: condition, relations: relations, loadRelationIds:true });
data = data.map(sentence => {
for (let i = 0; i < sentence.sentenceToSpeaker.length; i++) {
const element = sentence.sentenceToSpeaker[i];
if (element.id == speaker_id) {
sentence['recordedAudio'] = element
};
}
delete sentence.sentenceToSpeaker;
return sentence;
})
return data;
} catch (error) {
throw new HttpException(error, error.status)
}
}

在保存之前,当导入用户关系选项和businessUser是businessUser 的数组时,使用多对多关系一侧的级联来保存到两个表中

@ManyToOne(() => BusinessUser, (businessUser) => businessUser.businessHours ,{ cascade : true})
@JoinColumn()
businessUser: BusinessUser[];
const foundOne = await this.entity.findOne(id , {relations : ["businessUser"]})
const foundAll = await this.entity.findOne({relations : ["businessUser"]})

如果你想自动加载它,请使用热切的

@ManyToOne(() => BusinessUser, (businessUser) => businessUser.businessHours ,{ cascade : true , eager : true})
@JoinColumn()
businessUser: BusinessUser[];

相关内容

  • 没有找到相关文章

最新更新