带有关系 ID 的 Typeorm 插入

Hal*_*ğan 7 javascript orm typeorm

我使用 Typeorm,我只想使用relationId. 但它并没有像我预期的那样工作。

这是我的实体,

@Entity()
export default class Address extends BaseEntity {

    @Column({
        type: 'varchar',
        length: 255,
    })
    public title: number;

    @Column({
        type: 'varchar',
        length: 2000,
    })
    public value: number;

    @ManyToOne(type => User, user => user)
    @JoinColumn({ name: 'userId' })
    public user: User;

    @RelationId((address: Address) => address.user)
    public userId: number;

}
Run Code Online (Sandbox Code Playgroud)

当我尝试像下面的示例那样添加时,它添加了我不期望的 null userId

{
    "title": "My home address",
    "value": "Lorep Ipsum Sit Amet",
    "userId": 4
}

Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

当我更改有效负载时,一切正常。

{
    "title": "Ev adresim",
    "value": "Nova Suites",
    "user": 4
}
Run Code Online (Sandbox Code Playgroud)

我不想使用像上面这样的有效载荷。我沉迷于定义一个描述性的变量命名。感谢从现在开始的所有贡献和所有答案。

Jud*_*dge 13

看起来这是 @RelationId 装饰器的 TypeORM 问题: https: //github.com/typeorm/typeorm/issues/3867

您可以使用 @Column 来装饰 userId,而不是使用 @RelationId,当 JoinColumn 的名称等于数字列名称时,TypeORM 会匹配两者,您可以设置 userId 或用户,TypeORM 将处理它:

@ManyToOne(type => User, user => user)
@JoinColumn({ name: 'userId' })
public user: User;

@Column()
public userId: number;
Run Code Online (Sandbox Code Playgroud)