用户登录

上传的头像文件以后,跟这个文件相关的数据需要存储在数据仓库里。在终端,项目所在目录的下面创建一个模块,执行 nest generate module 生成一个模块,名字是 avatar-create 放在 avatar/modules/create 里面,用一个 --flat 选项。

然后在这个模块里添加一个命令,执行 npm run gc create-avatar 放在 avatar/modules/create/commands 目录的下面。

回到项目,打开 CreateAvatarCommand 命令,在命令参数里,添加一个 mimetype,类型是 string,再添加一个 filename,类型是 string,然后是 size,类型是 number,还需要一个 userId ,类型是 number。

再打开这个命令对应的处理器,先在处理的构造方法里注入一个 Repository ,实体是 AvatarEntity ,名字是 avatarRepository,然后分别导入需要的这些东西。

在 execute 里面,用一下 this.avatarRepository.save ,把 command.params 交给这个方法,它会在 avatar 这个数据表里插入一条数据记录。

打开 CreateAvatarModule,添加一个 imports,一个数组,用一下 forwardRef,提供一个函数参数,返回要导入的模块,这里就是 AvatarModule。

AvatarController

打开 AvatarController ,在这个上传头像接口上面,用一下 @UseGuards ,添加一个 AuthJwtGuard 守卫。在处理器方法里面再添加一个参数,用 @CurrentUser 装饰一下,参数的名字是 user,类型是 UserEntity。

在方法里面,解构一下 file,需要 mimetype,filename 还有 size,它们都来自 file 。方法返回的东西就是执行 CreateAvatarCommand 命令以后得到的结果,提供一个对象,里面需要 mimetype,filename ,size,还有 userId,对应的值是 user.id 。

执行命令需要用到 commandBus,在这个控制器里面,添加一个构造方法,然后再注入一个需要用的 CommandBus 。

测试

在 Http 客户端,重新发送一下这个上传头像文件请求,得到一个 401 响应,因为这个接口需要验证用户身份,打开用户登录,复制一下这个 token 的值。回到上传头像请求,配置一下身份验证,类型是 Bearer Token,把复制的令牌粘贴到这个 Token 字段里。

再重新发送一下这个请求。成功以后,在数据库客户端观察一下 avatar 这个数据表里的数据,你会发现这里会出现一条数据记录,里面存储了头像文件的 mimetype ,filename,size ,还有头像所属的用户的 id 。

存储头像文件相关数据《 Nest.js 企业级后端实践:用户头像 》

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点