打开 src/avatar 里的 avatar.controller,在文件的顶部导入 lodash,一会儿要用到它上面的一个方法组织一个对象。还需要导入 createAvatar,来自当前目录下面的 avatar.service 模块。
下面可以修改一下 上传头像 接口的处理器,在处理器里面先获取到当前用户的 ID,从 request.user 里面把 id 解构出来,重新起个名字叫 userId。
然后再准备一下要存储的头像文件相关的一些信息,声明一个 fileInfo,用一下 Lodash 里面的 pick 方法,从 request.file 里挑几个属性组织成一个对象,把它交给 fileInfo,需要的是 mimetype,filename 还有 size。
在存储的头像数据里面还得加上一个 userId ,声明一个 avatar,它的值是个对象,把 fileInfo 里的东西放进来,再添加一个 userId。
然后用一组 try,catch, 在 try 里面可以保存头像数据,声明一个 data,等于 await ,保存头像数据可以使用 createAvatar ,把 avatar 交给这个函数。
下面可以做出一个响应,用一下 response.status ,把响应的状态码设置成 201,再用 send,把 data 里的数据发给客户端。
在 catch 区块里处理一下在 try 里面做的事情发生的错误情况,执行 next ,带着 error 。
在 HTTP 客户端可以测试一下保存头像数据的功能,发送一下之前配置好的这个 上传头像 请求,这次成功以后会得到一个状态码是 201 的响应。
回到数据库客户端,观察一下 avatar 这个数据表,现在这个表里会出现一些数据,记录的就是刚才用户在客户端上传的这个头像文件相关的数据。 userId 的值是 6 ,这个用户就是 张三 。