我使用 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
}
当我更改有效负载时,一切正常。
{
"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/