更新用户数据可以交给一个命令完成,在终端,项目所在目录的下面,执行一下 npm run gc ,生成一个命令,名字是 update-user,放在 user/modules/update/commands 里面。
回到项目,打开 UpdateUserCommand 这个命令,设置一下命令参数,可以让它继承一下 UpdateUserDto ,然后在这个参数里再额外添加一个 userId,用户的 id,类型是 number。
打开这个命令对应的处理器,在 execute 里面,可以先用一个 console.log 输出 command.params 。
然后打开 UserUpdateController,在更新用户接口上面用一个守卫,@UseGuards,用一个 AuthJwtGuard 守卫。在接口处理器里面添加一个参数,用 @CurrentUser 装饰器,装饰一下 user 参数,类型是 UserEntity。
在这个方法要执行一下命令,我们先在这个控制器里添加一个构造方法,然后注入一个 CommandBus 依赖。
再修改一下 updateUser 方法返回的东西,可以是执行 UpdateUserCommand 这个命令得到的结果,新建一个 UpdateUserCommand,提供一个对象参数,先把 body 参数里的东西放进来,然后再添加一个 userId,对应的值是 user.id 。
测试
在 Http 客户端,发送一下更新用户请求,得到了一个 401 响应,提示未授权,因为这个接口会检查用户身份,打开用户登录,复制一下登录成功以后得到的令牌。回到更新用户请求,设置一下请求的身份验证,类型是 Bearer Token,把复制的令牌粘贴到 Token 这个字段里。再发送一下这个请求。
然后打开运行项目开发服务的终端观察一下输出的更新用户命令参数,里面有 userId,validate 还有 update 这些数据。