Ber*_*and 0 relay apollo graphql graphql-js react-apollo
我有一个 Apollo GraphQL 服务器与 API 通信,返回响应的大致结构如下:
{
"pagination": {
"page": 1,
// more stuff
},
sorting: {
// even more stuff
},
data: [ // Actual data ]
}
Run Code Online (Sandbox Code Playgroud)
这个结构将在我广泛使用的这个 API 的几乎所有响应中共享。data大多数情况下将是一个数组,但也可以是一个对象。
我如何以有效的方式编写它,以便我不必在模式中的每个数据类型上重复所有这些pagination和sorting字段?
非常感谢!
我通过创建一个名为graphql-s2s的库来对您的问题进行排序。它通过添加对类型继承、泛型类型和元数据的支持来增强您的架构。在您的情况下,为分页对象创建泛型类型可能是一个可行的解决方案。下面是一个例子:
const { transpileSchema } = require('graphql-s2s')
const { makeExecutableSchema } = require('graphql-tools')
const schema = `
type Paged<T> {
data: [T]
cursor: ID
}
type Node {
id: ID!
creationDate: String
}
type Person inherits Node {
firstname: String!
middlename: String
lastname: String!
age: Int!
gender: String
}
type Teacher inherits Person {
title: String!
}
type Student inherits Person {
nickname: String!
questions: Paged<Question>
}
type Question inherits Node {
name: String!
text: String!
}
type Query {
students: Paged<Student>
teachers: Paged<Teacher>
}
`
const executableSchema = makeExecutableSchema({
typeDefs: [transpileSchema(schema)],
resolvers: resolver
})
Run Code Online (Sandbox Code Playgroud)
我在这里写了更多细节(在第二部分)。
| 归档时间: |
|
| 查看次数: |
998 次 |
| 最近记录: |