【发布时间】:2021-07-19 04:54:37
【问题描述】:
我对 Postgres(和 Typeorm)还很陌生,很难弄清楚如何处理以下场景:
- 我有一个名为
blog的表和一个名为category的表。博客可以属于很多类别,类别可以有很多博客。所以我认为我需要一个“多对多”的关系。 - 我的连接表需要有一个名为
is_primary的列,所以由于我需要一个额外的自定义列,我相信我需要为此创建自己的实体,而不是使用自动生成的实体。我打电话给这张桌子blogCategory。当我需要将is_primary标志设置为 true 时,我在这里遇到了如何处理保存的问题。
这是我的架构:
// blog.entity.ts omitting some fields for brevity
@Column()
@PrimaryGeneratedColumn()
id: number;
@Column()
title: string;
@OneToMany(() => BlogCategory, blogCategory => blogCategory.blog)
blogCategories: BlogCategory[];
// category.entity.ts
@Column()
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
@OneToMany(() => BlogCategory, blogCategory => blogCategory.category)
blogCategories: BlogCategory[];
// blog-category.entity.ts
@PrimaryGeneratedColumn()
id: number;
@Column()
is_primary: boolean;
@Column()
categoryId: number;
@Column()
blogId: number;
@ManyToOne( () => Category, category => category.blogCategories )
category: Category
@ManyToOne( () => Blog, blog => blog.blogCategories )
blog: Blog
我认为这都是正确的,但如果我错了,请纠正我。但我现在被绊倒的部分是我实际处理博客插入的方式。我不确定如何在必要时添加is_primary 标志。我真的要手动插入blogCategory 项目吗?在这种情况下,我需要先保存博客,以便可以访问其id 以获取blogCategory。我有点印象是项目会自动创建。
提前感谢任何能够提供一些见解的人!
【问题讨论】:
标签: postgresql nestjs typeorm