注册用户接口会执行一个创建用户命令,在这个命令的处理器里面,我们可以把要注册的用户数据存储到应用的数据仓库里。
先打开 user-create.module ,在这个模块里面添加一个 imports,提供一个数组,然后用一个 ForwardRef ,提供一个回调,返回要导入的模块,这里就是 UserModule 模块。
再打开 create-user.command.handler,在这个处理器的构造方法里面,注入要使用的 Repository,实体是 UserEntity,分别再导入需要的这些东西,导入 InjectRepository ,UserEntity,还有 Repository。
在这个 execute 方法里面,声明一个 user,然后 await ,用一下 this.userRepository.save 这个方法,提供一个 command.params ,下面发布 UserCreatedEvent 事件,可以给它提供一个 user。方法最后返回的东西是一个对象,里面添加一个 insertId,对应的值是 user.id 。
测试
在 Http 客户端,发送一下这个创建用户请求,这次得到了一个 JSON 格式的响应,里面有一个 insertId,它的值就是刚刚注册的用户的 id。
再打开数据库客户端,观察一下 user 数据表,你会发现这里已经存储了刚才注册的张三这个用户数据。现在有个问题,就是这个用户的密码是明文密码,存储用户数据的时候,我们需要 hash 一下用户的密码,在后面我们会解决这个问题。