GraphQL Mutation 的实现方法和场景

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 的实现示例:

const { GraphQLObjectType, GraphQLString, GraphQLInt, GraphQLNonNull } = require('graphql');
const UserType = require('./UserType');
const db = require('./db');

const MutationType = new GraphQLObjectType({
  name: 'Mutation',
  fields: {
    addUser: {
      type: UserType,
      args: {
        name: { type: new GraphQLNonNull(GraphQLString) },
        age: { type: new GraphQLNonNull(GraphQLInt) },
      },
      resolve(parent, args) {
        const user = { id: db.users.length + 1, name: args.name, age: args.age };
        db.users.push(user);
        return user;
      },
    },
  },
});

module.exports = MutationType;

在上面的代码中,我们首先引入了需要的依赖和类型定义,然后定义了一个 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


纠错
反馈