用户登录

在 GraphQL 里面,一般要修改数据的时候,可以执行 Mutation 操作,这个词有转变或改变的意思。要执行 Mutation 操作需要定义 Mutation 类型,然后在里面添加一些字段。

打开 UserResolver,在这个 Resolver 里面,先添加一个方法,方法的名字叫 updateUsername,然后在它上面用一个 @Mutation 装饰器装饰一下。注意选择导入来自 @nestjs/graphql 里面的这个 Mutation。设置一下字段的类型,returns,返回的是 User 类型的数据。

用这个 Mutation 装饰了一个方法以后,就会在 Schema 里面的 Mutation 类型里面,添加一个字段,这个字段的名字默认就是下面这个方法的名字。

这个字段还需要两个参数,一个是用户的 id ,还有一个是用户的新名字。这两个参数用 @Args 装饰器装饰一下,设置一下字段参数的名字,比如 id,把这个字段参数的值,交给这个方法里的 id 参数,这个参数的值的类型是 string。 再用 @Args ,字段参数是 newName ,交给方法的 newName 参数,类型也是 string。

这个方法 return 的东西应该是修改了名字以后的这个用户。用一下 this.userService 上的 updateUserName 方法,把 id 还有 newName 这两个参数值交给这个方法。

服务

打开 UserService ,在这个服务器定义一下需要的这个方法,名字叫 updateUserName,支持一个 id 参数,类型是 string,还有一个 newName 参数,类型也是 string。

方法做的事情就是修改一下指定 id 的用户的用户名。在真实的应用里面,你可能需要修改数据库里存储的数据。我们这里演示用的数据在一个对象里面,修改对象里的一个数组里的其中的一个数据项目。

可以这样。先添加一个 uesrs,它的值等于 this.data 里 users。

然后再获取到要修改的用户数据项目在数组里的索引号,添加一个 index,它的值等于 users,用一下数组上的 findIndex 方法,找到符合条件的项目的索引号,提供一个函数参数,让这个函数接收一个 item 参数,条件是 item 的 id 等于这个 updateUserName 方法里的 id 参数值的数据项目。 findIndex 会得到这个数据项目的索引号。

然后设置一下这个数据项目的 name 参数的值,就是它的用户名,users 方括号 index,访问一下 name 属性的值,直接设置一下它的值,让它等于 newName。

最后可以再让这个方法返回这个被修改过用户名的用户数据,这里应该就是 users 方括号 index。

测试

下面到 GraphQL Playground 上面,试一下这个 mutation 查询。

可以先查询一个用户,比如 id 号是 1 的这个用户,现在这个用户的用户名是 wanghao,下面我们用一个 Mutation 查询,让 GraphQL 服务端修改一下这个用户的用户名。

这个查询跟之前 Query 类型的查询不太一样,我们需要设置一下操作的类型,这里应该设置成 mutation,一组大括号,要用的是 Mutation 类型里的 updateUserName 这个字段,它有两个参数,一个是 id ,它的值是要修改名字的用户的 id 号。还需要一个 newName 参数,它的值是用户的新名字。

字段返回的是 User,可以继续设置一下,需要这个 User 里的哪一些字段,添加一个 name 字段。 执行一下这个查询。

GraphQL 服务器,响应回来的是修改之后的用户数据,里面有个 updateUserName 属性,它里面的 name 是用户的用户名,你会发现,这个用户的用户名是修改之后的用户名。

再查询一下这个 id 号是 1 的用户,响应回来的用户数据里面,用户名也会是刚刚用 Mutation 查询修改之后的用户名。

Mutations:请求修改数据《 企业应用架构:GraphQL 》

统计

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

社会化网络

关于

微信订阅号

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