目标很简单。我有一个由自托管 Strapi CMS 创建的表,我通过 NestJS 后端连接到该表。通过这种方法,我希望继续在同一个数据库中工作,而不需要对 Strapi 进行额外的 API 调用。感兴趣的表的结构如下所示:
@Entity({ name: 'posts' })
export class PostEntity {
@PrimaryGeneratedColumn()
id!: number;
???
category!: CategoryEntity;
}
@Entity({ name: 'categories' })
export class CategoryEntity {
@PrimaryGeneratedColumn()
id!: number;
???
posts!: PostEntity[];
}
@Entity('posts_category_links')
export class PostCategoryLinkEntity {
@PrimaryGeneratedColumn()
id!: number;
@Column({ name: 'post_order' })
postOrder!: number
???
categoryId!: number;
???
postId!: number;
}
第三个表保存两个实体的 ID。
条件:
目标:
以下代码应返回类别键中包含 CategoryEntity 的所有帖子:
this.postsRepository.find({关系: ['类别']})
试试这个:
@Entity({ name: 'posts' })
export class PostEntity {
@PrimaryGeneratedColumn()
id!: number;
@OneToOne(() => CategoryEntity, (item) => item.Category, { })
category!: CategoryEntity;
}
@Entity({ name: 'categories' })
export class CategoryEntity {
@PrimaryGeneratedColumn()
id!: number;
@OneToMany(() => PostEntity, (item) => item.Post)
posts!: PostEntity[];
}
@Entity('posts_category_links')
export class PostCategoryLinkEntity {
@PrimaryGeneratedColumn()
id!: number;
@Column({ name: 'post_order' })
postOrder!: number
@Column({ nullable: false })
categoryId!: number;
@OneToOne(() => CategoryEntity, { nullable: false })
@JoinColumn({ name: "categoryId", foreignKeyConstraintName: "category_fk" })
Category: CategoryEntity;
@Column({ nullable: false })
postId!: number;
@ManyToOne(() => PostEntity, (post) => post.id, { nullable: false })
@JoinColumn({ name: "postId", foreignKeyConstraintName: "post_fk" })
Post: PostEntity;
}
但是,也许您需要应用关系
OneToMany
与 category!: CategoryEntity[];