0

TypeORM と TypeGraphQL を使用して、双方向の OneToOne 関係を作成しようとしています。と の 2 つのエンティティがAccount.tsありDetails.tsます。

現在、アカウントのコンテキストで詳細を作成でき、コンテキストからアカウント ID を正常に入力できます。

ただし、私のアカウント テーブルでは、detailsId フィールド (外部キー) は null のままで、更新されません。したがって、コンテキストで詳細を照会することはできません。

これが私の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テーブルで使用可能になります。

どんな助けでも大歓迎です。

4

1 に答える 1