我使用 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;

}
当我尝试像下面的示例那样添加时,它添加了我不期望的 null userId
{
    "title": "My home address",
    "value": "Lorep Ipsum Sit Amet",
    "userId": 4
}

javascript - 带有关系 ID 的 Typeorm 插入-LMLPHP
当我更改有效负载时,一切正常。
{
    "title": "Ev adresim",
    "value": "Nova Suites",
    "user": 4
}
我不想使用像上面这样的有效载荷。我沉迷于定义一个描述性的变量命名。感谢从现在开始的所有贡献和所有答案。

最佳答案

看起来这是 @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;

关于javascript - 带有关系 ID 的 Typeorm 插入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61361008/

10-09 20:07