TypeORM TypeGraphQL OneToOne关系外键不起作用

问题描述

我正在尝试使用TypeORM和TypeGraphQL创建双向OneToOne关系。我有两个实体Account.tsDetails.ts

现在,我可以在该帐户的上下文中创建“详细信息”,它会从上下文中成功填充“帐户ID”。

但是,在“我的帐户”表中,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表中将提供外键。

非常感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)