在内容项目里面可以加上内容被赞的次数,先去定义一个查询片断,打开 src/post/post.provider,在这里定义的 sqlFragment 里面,再添加一个查询片断,名字叫做 totalLikes ,用一个字符模板组织一段 SQL 查询。
这段查询可以用一个子查询,先用一组括号,里面用 SELECT ,COUNT 一下 user_like_post 表的 postId ,FROM 数据来源是 user_like_post 数据表,用 WHERE 设置一个条件,条件是 user_like_post 表里的 postId 等于 post 表里的 id 栏目的值。这样统计的结果就是某个内容被赞的次数,给这个子查询的结果起个名字,叫 totalLikes。
然后打开 post.service,在这个文件里,可以找到 getPosts 函数,修改一下这个函数里准备的这段查询,在 SELECT 的下面,再添加一个 sqlFragment 里的 totalLikes 。
在 HTTP 客户端,可以测试一下。打开 内容列表,发送一下请求,你会发现在内容列表的内容项目里面会出现一个 totalLikes,如果内容没被赞过,它的值就会是 0 。
修改一下请求地址,加上 page 查询符,查看第二页的内容项目,这个 id=1 的内容,它的 totalLikes 是 0。现在我们可以手工给它添加几个赞。
在数据库客户端, 直接在 user_like_post 数据表里添加几条记录, userId 是 2, postId 是 1。这就相当于是 id=2 的这个用户赞了 id=1 的这个内容。再添加两条数据,userId=3,postId=1 ,userId=6,postId=1 。现在有三个用户都赞了 id=1 的这个内容。
回到 HTTP 客户端,重新发送一下这个请求,然后观察一下 id=1 的这个内容项目的 totalLikes 的值,现在就会是 3。