【发布时间】:2021-01-01 15:37:19
【问题描述】:
我正在尝试使用 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 表中可用。
非常感谢任何帮助。
【问题讨论】:
标签: postgresql typeorm entities typegraphql graphql-mutation