在 Comment 服务里定义一个可以查询出指定内容的评论列表的方法,方法的名字可以是 showPostComments,方法接收一个 id 参数,类型是 number,这个 id 的值应该是一个内容的 id。
方法里面 return 的是 await,用一下 this.commentRepository,先用 createQueryBuilder,创建一个查询构建器,别名是 comment。
然后用 leftJoinAndSelect,关系是 comment 上的 user,别名设置成 user,接着可以再用一个 leftJoinAndSelect,关系是 comment.post,别名设置成 post。
下面再用 where 设置一个查询条件,条件是 post 的 id 等于一个参数名字叫 :id,然后在 where 的第二个参数里设置一下前面需要的这个 id 参数的值,这里就是 id ,也就是 showPostComments 方法接收的 id 参数。
最后再用 getMany,查询出这个评论列表。
查询指定用户发布的评论跟这个方法差不多,复制一份,修改一下方法的名字,showUserComments,这个方法的 id 参数的值应该是用户的 id 号。
查询的时候设置的条件应该修改成 user 的 id。
控制器
打开 Comment 控制器,用 @Get 定义一个路由,地址是 posts/:id/comments。
路由处理方法的名字叫 showPostComments,方法接收一个 id 参数,用 @Param 装饰它,给它一个 id,用 ParseIntPipe 把它转换成数字类型的值,参数的名字叫 id,类型是 number。
方法 return 的是 await,用一下 this.commentService,showPostComments,它需要一个 id。
复制一份这个路由,处理的方法名字叫 showUserComments,方法里 return 的是执行 this.commentService 上的 showUserComments 返回的结果, 修改一下路由地址,users/:id/comments。
测试
打开 Http 客户端,可以测试一下,新建一个请求,名字叫 Show Comments,请求用的方法是 GET,请求的地址是 localhost:3000/posts/ 加上一个内容的 id ..
在 comment 表里查看一下,Id 号是 11 的内容有一些评论, posts/11 斜线,comments。
发送一下这个请求,得到的响应就是 id 号是 11 的这个内容上的评论列表。
打开 post 表,找个内容再给它添加一个评论,比如再让杜甫评论一下 id 号是 3 的这个内容。
配置一个评论请求,请求的地址是 posts/3/comments。
设置一下评论内容,发送一下这个请求 ..
然后打开 Show Comments,用 GET 方法 请求 posts/3/comments,请求得到的就是 id 号是 3 的这个内容的评论列表。
查看一下 comment 表里的评论,id 号是 7 的这个用户有一些评论。
再到 Http 客户端配置一个请求,地址是 users/ 加上用户的 id 号,然后是 comments。
这次得到的响应就是 id 号是 7 的用户发布的所有评论。