用户登录

在我们介绍的事件驱动架构的应用里,要获取数据,可以执行查询。查询可以有个对应的查询处理器。在项目的 user 模块里面,新建一个文件,放在 queries,名字是 get-users.query.ts,定义一个查询。export 一个 class,类的名字是 GetUsersQuery,表示获取全部用户的查询。

下面可以再给这个查询定义一个对应的查询处理器,在 queries 里面,再添加一个文件,名字是 get-users.query.handler.ts。

在文件里导出一个类,export 一个 class,名字是 GetUsersQueryHandler ,这个类让它 implements 一下 IQueryHandler 这个接口。类型设置成 GetUserQuery 这个查询。

在类里面实施了这个接口就得在类里面添加一个 execute 方法,把它标记成一个 async 方法,名字是 execute,方法接收一个 query 参数,在这个类里它的类型应该是 GetUsersQuery 这个查询。

方法 return 的值,就是执行 GetUserQuery 查询的时候返回的东西。

这个数据可以从应用的数据库里获取到,这里我们可以先去准备点演示用的数据,放在 user 模块里,新建一个文件,名字是 user.mock.data.ts。 export const 名字是 users ,它的值是一个数组,里面添加两个项目,项目里有个 name 属性,设置一下对应的值,再添加一个项目,修改一下 name 的值。

回到 GetUsersQueryHandler,让它的 execute 方法,返回的是 users,这个 users 来自刚才我们创建的 user.mock.data。

让这个查询处理器处理指定的查询,需要在这个类的上面,用一个装饰器,名字是 @QueryHandler,它来自 @nestjs/cqrs。把查询的名字交给它,GetUsersQuery。

注册

下面再打开 UserModule 模块,在模块的 providers 里面,要配置一个 Provider,把刚才定义的查询处理器添加到这里,名字是 GetUsersQueryHandler。

Queries:定义查询与查询处理器《 企业应用架构:事件驱动 》

统计

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

社会化网络

关于

微信订阅号

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