使用GraphQL + Apollo Client,如何在变异后返回totalCount?

时间:2018-01-07 18:09:33

标签: reactjs graphql apollo

我有以下内容:

const typeDefs = `
type Request {
  id: ID!
  email: String!
  totalCount: Int
}

type Mutation {
  createRequest(email: String!): Request!
}
`;

export default typeDefs;

现在totalCount返回null。使用GraphQL,将TotalCount作为突变的响应返回的正确方法是什么。应该在请求模型中以某种方式包含totalCount吗?

1 个答案:

答案 0 :(得分:1)

您已将totalCount定义为每个Request对象的属性,但totalCount表示所有Request个对象的数量。

在变异响应中允许其他数据的常见做法是让它返回一个包装器。例如:

type Mutation {
  createRequest(email: String!): CreateRequestResponse!
}

type CreateRequestResponse {
  request: Request!
  totalCount: Int!
}

CreateRequestResponse是一个包装器对象,可以包含客户端在响应中可能需要的任意属性。 totalCount这里只是一个例子;你可以在那里添加任何属性。

有了这个,Request类型的定义将是:

type Request {
  id: ID!
  email: String!
}

这是理想的,因为它只包含特定请求的属性。