更新内容的时候可以存储一下内容与标签的关系,在 Post 服务里找到处理内容更新用的方法,就是这个 update 方法,先从 data 参数里把 tags 解构出来。
更新内容用的是 postRepository 上的 update 方法,给这个方法提供的 data 值里在要去掉 tags,在上面 delete 掉 data 里的 tags。
下面执行更新内容,可以去掉定义的 result。
更新之后可以再把这个内容实体找出来,const entity,await,this.postRepository,findOne,找到指定 id 的内容实体,给它一个选项,添加一个 relations,带着 category 还有 tags 这两个关系。
下面判断一下,如果有 tags,可以设置 entity 的 tags,它的值用一下 this.beforeTag,把 tags 交给这个方法。
最后 return,await,this.postRepository.save,保存一下 entity,这样就保存了这个内容实体与标签的关系。
测试
回到数据库客户端,打开 post 表, 可以先找个带 山 这个关键词的诗句, 比如 id 号是 15 的这个内容。
在 HTTP 客户端,新建一个请求,名字叫 Post Update,请求方法是 PUT,设置一下请求的地址,localhost:3000/posts,斜线,后面加上内容的 id 号。
请求里带着一个主体数据,可以只添加一个 tags,它的值是个数组,每个项目都是一个对象,对象里可以有一个 id 属性,它的值就是要给这个内容打上的标签数据记录的 id 号。
发送一下这个请求。
再回到数据库客户端,打开 post_tags_tag 这个表,这里你会发现, id 号是 15 的内容关联了一个 id 号是 1 的标签。