Ale*_*Dim 5 postgresql node.js typescript typeorm nestjs
我有以下实体:
@Entity({ name: 'user' })
export class UserEntity extends BasicEntity {
@PrimaryGeneratedColumn()
id: number;
@Column({
nullable: false,
unique: true,
})
login: string;
}
Run Code Online (Sandbox Code Playgroud)
@Entity({ name: 'wallet' })
export class WalletEntity extends BasicEntity {
@PrimaryGeneratedColumn()
id: number;
@ManyToOne(() => UserEntity)
@JoinColumn({ name: 'user_id' })
user: UserEntity;
@Column({
name: 'address',
type: 'text',
})
address: string;
}
Run Code Online (Sandbox Code Playgroud)
所以,钱包表看起来像这样:
-------------------------
id | user_id | address
-------------------------
1 | 1 | 0x12
-------------------------
2 | 43 | 0x10
Run Code Online (Sandbox Code Playgroud)
我喜欢通过 Repository api 更新wallet实体。但问题是,我不能只是:
WalletRepository.save({ address: '0x12', userId: 2 })
Run Code Online (Sandbox Code Playgroud)
因为 Typescript 给了我一个错误,userId应该是userEntity,而不是数字。但我想更新一个关系列。那么有没有更新的选项呢?
我找到了答案,不是在 TypeORM 文档中,而是在 Github post 中。
所以我需要两列:
@Entity({ name: 'wallet' })
export class WalletEntity extends BasicEntity {
@PrimaryGeneratedColumn()
id: number;
@ManyToOne(() => UserEntity, (entity: UserEntity) => entity.id)
@JoinColumn({ name: 'user_id' })
user: UserEntity;
@Column({ name: 'user_id', type: 'int' })
userId: number;
@Column({
name: 'address',
type: 'text',
})
address: string;
}
Run Code Online (Sandbox Code Playgroud)
一个用于{name: user_id}关系,另一个用于关系更新或查找值。这相当不明显。因此,如果您想通过此关系 ID 搜索值,您可以通过userID实体的属性来完成。但是当您使用 进行join部分操作时relations[],您可以按字段访问对象user。
| 归档时间: |
|
| 查看次数: |
4973 次 |
| 最近记录: |