用户头像功能相关的东西可以放在项目的 src/avatar 这个目录里面。在 avatar.middleware 里面,用 Multer 模块提供的功能,创建一个可以处理上传头像文件用的中间件,名字叫 avatarInterceptor,这个中间件可以用在 上传头像 接口的上面。
在 avatar.controller 里定义 上传头像 接口需要的处理器,然后在 avatar.router 里定义 上传头像 接口,在这个接口上使用 authGuard 中间件检查用户的登录状态,用 avatarInterceptor 提供文件上传功能。这样 上传头像 接口就可以提供上传头像文件的服务了。
上传的头像文件需要调整成几种不同的尺寸,我们可以使用 Jimp 提供的功能,创建一个可以调整文件尺寸用的中间件,名字是 avatarProcessor,把它安排在 上传头像 接口上使用,这样上传的头像文件会被调整成几种不同的尺寸。
在应用里我们要记住用户上传的头像相关的数据,可以在应用的数据仓库里创建一个叫 avatar 的数据表来保存这些数据。然后定义一个存储头像数据的功能,名字叫 createAvatar,在 上传头像 接口的处理器里面可以使用这个函数提供的功能,把上传的头像文件相关的数据保存到数据仓库里。
最后要定义一个头像服务,给客户端提供它需要的头像文件。先定义一个 findAvatarByUserId ,它能找出指定用户的头像数据,然后在 头像服务 接口的处理器里面,可以根据找出来的头像数据找到对应的头像文件,再把它发给客户端。
回到终端,在项目所在目录的下面,查看一下项目的状态,当前是在 avatar 这个分支上,项目里没什么可以提交的东西,再看一下提交历史。
然后把当前分支切换到 develop ,在这个分支上要做一次合并,合并的就是 avatar 这个分支。 最后可以再把本地上的 avatar 这个分支推送到项目的 origin 这个远程的上面。