D12 要做的训练内容是去创建一个标签模块,标签在应用里也是一种实体,每个标签可以有自己的名字、别名等等,你也可以加上标签的描述、缩略图之类的东西。
这次训练的重点是要理解多对多的关系,我们可以在每个文章内容上面打上多个标签,每个标签都可以关联一组文章内容。
先在标签实体上定义它跟文章内容的关系:
@ManyToMany(type => Post, post => post.tags) posts: Post[];
标签上的这个关系的名字叫 posts,它的类型是一组 Post 实体。在 Post 实体上对应的关系应该叫 tags 。
在文章内容实体上定义与标签的关系:
@ManyToMany(type => Tag, tag => tag.posts) @JoinTable() tags: Tag[];
同样使用 @ManyToMany 这个装饰器去定义多对多的关系,这个关系的名字叫 tags,类型是一组 Tag 实体。注意这里定义关系的时候用了一个 @JoinTable 装饰器,它可以创建一个中间表来保存内容与标签之间的多对多的关系。