我有 2 个实体通过一对多/多对一关系相互关联。对于这个例子,我们称它们为用户和照片。
一个用户有很多照片,很多照片有一个用户
@Entity({ name: 'user' })
export class User {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({ type: 'varchar' })
name: string;
@OneToMany(() => Photo, photo => photo.user, { cascade: true, onDelete: 'CASCADE', onUpdate: 'CASCADE' })
photos: Photo[];
}
@Entity({ name: 'photo' })
export class Photo {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({ type: 'varchar' })
name: string;
@ManyToOne(() => User, user => user.photos)
@JoinColumn({ name: 'userId', referencedColumnName: 'id' })
user: User;
}
现在,在我的控制器中,我有一个像这样的 body dto:
@Controller('general_path')
export class MyController {
constructor(private myService: MyService) {}
@Post('/sub_path')
async addPhoto(@Body() body: PhotoDto): Promise<Photo> {
return await this.myService.addPhoto(body);
}
}
我的问题是: 考虑到当发出帖子请求时,我希望帖子正文包含新照片的名称以及它将绑定到的用户的 ID,我的 PhotoDto 应该是什么样子?
export class PhotoDto {
@IsString()
@IsNotEmpty()
name: string;
userId: string
}
更具体地说,如何在 dto 中指定 userId 是引用另一个实体的 id(多对一关系的 bc)?