首页 > 解决方案 > Typeorm查找查询不返回ManyToOne关系ID

问题描述

正如标题所说:

我有一张business-user桌子和一张business-hours桌子。buiness-hours与 具有多对一关系business-user

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

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

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

标签: typescriptpostgresqlnestjstypeorm

解决方案


官方文档上有一个“官方”解决方法。它解释了“如何在不加入关系的情况下使用关系 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"]}请从您的请求中删除。


推荐阅读