GraphQL 是一种用于 API 的查询语言,它可以让客户端精确地指定需要的数据,避免了传统 REST API 的过度获取或者不足的问题。在 GraphQL 中,Mutation 是一种用于修改数据的操作,可以理解为是 REST API 中的 POST、PUT、DELETE 等操作。本文将介绍 GraphQL Mutation 的实现方法和场景。
Mutation 的实现方法
Mutation 与 Query 类似,都是通过定义 Schema 来实现。在 GraphQL 中,我们可以通过定义 Mutation 类型来定义 Mutation。下面是一个简单的 Mutation 定义示例:
type Mutation { addUser(name: String!, age: Int!): User }
在上面的 Schema 中,我们定义了一个 addUser Mutation,它接收两个参数 name 和 age,然后返回一个 User 类型的对象。下面是一个 addUser Mutation 的实现示例:
-- -------------------- ---- ------- ----- - ------------------ -------------- ----------- -------------- - - ------------------- ----- -------- - ---------------------- ----- -- - ---------------- ----- ------------ - --- ------------------- ----- ----------- ------- - -------- - ----- --------- ----- - ----- - ----- --- ----------------------------- -- ---- - ----- --- -------------------------- -- -- --------------- ----- - ----- ---- - - --- --------------- - -- ----- ---------- ---- -------- -- -------------------- ------ ----- -- -- -- --- -------------- - -------------
在上面的代码中,我们首先引入了需要的依赖和类型定义,然后定义了一个 MutationType 类型,它包含了一个 addUser Mutation。在 addUser 的实现中,我们首先创建了一个新的用户对象,然后将它添加到 db 中,最后返回这个新的用户对象。
Mutation 的场景
Mutation 主要用于修改数据,常见的场景包括:
添加数据
例如上面的 addUser Mutation,它可以用于添加一个新的用户。
更新数据
我们可以通过 Mutation 来更新某个对象的属性。例如,下面是一个更新用户年龄的 Mutation:
type Mutation { updateUserAge(id: ID!, age: Int!): User }
删除数据
我们也可以通过 Mutation 来删除某个对象。例如,下面是一个删除用户的 Mutation:
type Mutation { deleteUser(id: ID!): User }
复杂操作
有些场景下,我们需要进行一些复杂的操作,例如批量修改或者删除数据。这时候,我们可以通过 Mutation 来实现。例如,下面是一个批量删除用户的 Mutation:
type Mutation { deleteUsers(ids: [ID!]!): [User] }
在上面的 Mutation 中,我们接收一个 ids 参数,它是一个 ID 数组,表示需要删除的用户 ID。最后返回一个 User 数组,表示删除成功的用户列表。
总结
Mutation 是 GraphQL 中用于修改数据的操作,可以用于添加、更新、删除数据等场景。我们可以通过定义 Mutation 类型来实现 Mutation,然后在 resolve 函数中编写具体的实现。如果你想更深入地了解 GraphQL,可以去官网查看更多文档和示例。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/658b835ceb4cecbf2d0c3218