TypeORM getRepository.find()不包含外键字段

时间:2019-07-11 06:20:38

标签: orm typeorm ts-node

我正在尝试获取entity中包含的所有列,但是我只能从另一个实体中获取没有任何关系的列。

我使用此代码块将所有行提取到该存储库。

private translationTextRepository = getRepository(TranslationText);

async all(request: Request, response: Response, next: NextFunction) {
    return this.translationTextRepository.find();
}

这是该存储库的entity

@Entity('TranslationText')
export class TranslationText {

    @PrimaryGeneratedColumn()
    ID: number;

    @Column()
    CreatedBy: string;

    @Column({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP' })
    CreatedDate: Date;

    @Column()
    Status: boolean;

    @Column({ nullable: true, default: null })
    ModifiedBy: string;

    @Column({ type: 'timestamp', nullable: true, default: null })
    ModifiedDate: Date;

    @Column()
    Text: string;

    @ManyToOne((type) => Locale, (locale) => locale.ID)
    @JoinColumn({ name: 'LocaleID' })
    LocaleID: Locale;

    @ManyToOne((type) => TranslationTitle, (translationTitle) => translationTitle.ID)
    @JoinColumn({ name: 'TranslationTitleID' })
    TranslationTitleID: TranslationTitle;

}

但是我只能提取LocaleIDTranslationTitleID以外的所有列。

我该如何实现?

2 个答案:

答案 0 :(得分:1)

您可以尝试指定类似的关系吗?

async all(request: Request, response: Response, next: NextFunction) {
   return this.translationTextRepository.find({
     relations:["LocaleID","TranslationTitleID"]
    });
}

因为您必须明确表示希望与查询建立联系。

答案 1 :(得分:0)

检查此文档: https://typeorm.io/#/relations-faq/how-to-use-relation-id-without-joining-relation 解决方案:

  1. 定义新列:

    @column()
    LocaleID:数字

将旧的重命名为:Locale

但是由于外键问题,typeOrm无法同步您的表。

  1. 在@ManyToOne({eager:true})中使用eager选项

搜索结果将包含关系Locale对象,您可以从中获取ID。