现在我们去定义取消点赞内容用的接口,先定义一下接口需要的处理器,打开 like 下面的 like.controller,在文件顶部,从 like.service 里面,导入 deleteUserLikePost 这个函数。
然后找个地方去定义一下取消点赞内容接口需要的处理器,处理器的名字可以叫 destroyUserLikePost, 在处理器里面准备一下需要的数据,先把 postId 从地址参数里面解构出来,地址参数都在 request.params 这个属性里面。再把当前用户的 id 解构出来,重新给它起个名字叫 userId,当前用户是在 request.user 这个属性里。
下面可以执行一下取消点赞内容,用一组 try,catch,在 try 里面,声明一个 data,等于 await,用一下 deleteUserLikePost ,先把 userId 交给这个函数,然后用 parseInt 把 postId 转换成十进制的数字,再把结果作为这个函数的第二个参数。
deleteUserLikePost 函数会根据给它提供的 userId 还有 postId 参数的值,删除掉在 user_like_post 数据表里的数据记录。处理器要给客户端做出响应,用 response.send,把上面这个 data 发给客户端。
在 catch 区块里处理一下发生的错误,执行 next ,带着 error,这样错误会交给应用默认的异常处理器去处理。
有了处理器以后,可以再去定义这个接口,打开 like.router,找个地方定义 取消点赞内容 这个接口。用 router 上的 delete 方法定义这个接口,这样这个接口支持用 HTTP 的 DELETE 方法使用它。接口的地址是 /posts/:postId/like ,接口上安排一个 authGuard 检查用户的登录状态,再把接口的处理器设置成 likeController 里的 destroyUserLikePost 。