我正在尝试使用 TypeORM 和 TypeGraphQL 创建双向 OneToOne 关系。我有两个实体一个Account.ts
和Details.ts
。
现在,我可以在帐户的上下文中创建详细信息,并成功地从上下文中填充帐户 ID。
但是,在我的 Account 表中, detailsId 字段(外键)保持为空并且不会更新。因此,我无法在上下文中查询详细信息。
这是我的Account.ts
实体
@ObjectType()
@Entity()
export class Account extends BaseEntity {
@Field()
@PrimaryGeneratedColumn()
id: number;
@OneToOne(() => Details, (detail) => detail.user, {cascade: true, eager: true})
@Field(() => Details)
@JoinColumn()
detail: Details;
}
这是我的Details.ts
实体。
@ObjectType()
@Entity()
export class Details extends BaseEntity {
@PrimaryGeneratedColumn()
id: number;
@Field()
@Column()
title: string;
@Field()
@Column()
userId: number;
@OneToOne(() => Account, (user: Account) => user.detail)
user: Account;
}
这是我的解析器。
@Mutation((_returns) => Details)
@UseMiddleware(isAuth)
async addDetails(
@Arg("title") title: string,
@Ctx() { req }: MyContext
): Promise<Details> {
const details = this.detailsRepository.create({
title,
userId: req.session.userId,
});
return await this.detailsRepository.save(details);
}
我相信我定义我的实体错误,否则Account.ts
表中将提供外键。
任何帮助是极大的赞赏。