NodeJS TypeORM关系具有ID以外的字段

h7appiyu  于 2022-12-22  发布在  Node.js
关注(0)|答案(2)|浏览(134)

我想在TypeORM中创建一个一对多的关系,其中的字段不是id,通常的关系如下所示,但是在同一个示例中,假设User表的列name也是唯一的,现在我想在关系中引用它,那么照片中的外键将包含值name并且在Photos表中给予它不同于userId的不同列名例如userName,我到底该怎么做,我被卡住了,坦率地说霍韦不知道该怎么做。

pod7payv

pod7payv1#

供将来参考

如果希望关系指向id以外的列,则必须将referencedColumnName: '<column name here>'添加到@JoinColumn()选项中。
例如:

@Entity()
export class Photo {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    url: string;

    @ManyToOne(() => User, user => user.photos)
    @JoinColumn({ name: 'userName', referencedColumnName: 'name' })
    user: User;

}

此外,请注意从typeORM的Angular 指定referencedColumnName,而不是真正的基础驱动程序列名。例如,如果要引用名为user_name的列,但实体的属性使用camelCase userName,则必须指定:

referencedColumnName: 'userName'

如果指定数据库列名,则会出现错误,指出typeORM无法在实体定义中找到引用的列。

7kjnsjlb

7kjnsjlb2#

@Entity()
export class Photo {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    url: string;

    @ManyToOne(() => User, user => user.photos)
    @JoinColumn({ name: 'userName' }) // < -- add this line
    user: User;

}

@Entity()
export class User {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    name: string;

    @OneToMany(() => Photo, photo => photo.user)
    photos: Photo[];
}

相关问题