【发布时间】:2021-01-08 03:49:35
【问题描述】:
当用户被删除时,我尝试删除用户的个人资料。但它不会删除个人资料上的任何内容。
用户实体
@Entity()
export class User {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@OneToOne(type => Profile, profile => profile.user,
{ eager: true, cascade: true, onDelete: 'CASCADE' })
@JoinColumn()
profile: Profile;
}
个人资料实体
@Entity()
export class Profile {
@PrimaryGeneratedColumn()
id: number;
@Column()
gender: string;
@Column()
photo: string;
@OneToOne(type => User, user => user.profile)
user: User;
}
我如何删除用户。
const userRepository = connection.getRepository(User);
const user = await userRepository.findOne({ where: {id: 'someuserId'}, relations: ["profile"] });
await user.remove()
用户已被删除,但用户的个人资料没有任何反应。
谁能解释一下如何删除一对一的关系?
【问题讨论】:
-
如果您查看 SQL 数据库中的实际表,是否配置了实际的级联?
-
这里是用户 --> 约束
FK_ef7a0cc61d7873284f1cedc5d5d外键 (profileId) 引用profile(id) 删除级联 -
还有这个 --> 唯一键
REL_ef7a0cc61d7873284f1cedc5d5(profileId) @AluanHaddad -
在 SQL 中,
cascade规范属于关系中的子表或依赖表。我假设Profile依赖于User,因此您可能需要将级联规范放在装饰器中关系的另一端。 -
user.remove()这个语法正确吗?用户实体上不存在删除。
标签: mysql typescript nestjs typeorm