Graphql:如何在解析器中获取类型的字段参数?
Graphql: How can get field arguments of a type in resolver?
我使用 graphql-tools
库和 makeExecutableSchema
函数通过将模式和解析器传递给它来制作我的模式
这是我的架构:
type Trip {
code: String!
driver: User!
vehicle: Vehicle!
destination: Location!
passengers(page: Int, count: Int): [User!]!
}
type Query {
trip(id: String!): Trip
}
这是我的解析器:
// some imports...
export default {
Query: {
async trip(_, { id }, ctx, info) {
const trip = await Trip.findById(id);
// const page = ???, count = ???
// work on fetch data...
return result;
},
};
如何获得 page
和 count
,它们被定义为 passengers
的嵌套参数?
您应该为 Trip
类型定义解析器,例如:
export default {
Query: {
async trip(_, { id }, ctx, info) {
const trip = await Trip.findById(id);
// const page = ???, count = ???
// work on fetch data...
return result;
},
Trip: {
async passengers(trip, { page, count }, ctx, info) {
...
},
}
};
在GraphQL中,不是"nested fields of a type"的概念,而是"the type of a field"的组合。 Query
类型的 trip
字段具有 Trip
类型,因此当您要使用 passengers
字段时,应将其视为 [=11] 下的字段=] 类型,不是 Query
类型的嵌套字段。
我使用 graphql-tools
库和 makeExecutableSchema
函数通过将模式和解析器传递给它来制作我的模式
这是我的架构:
type Trip {
code: String!
driver: User!
vehicle: Vehicle!
destination: Location!
passengers(page: Int, count: Int): [User!]!
}
type Query {
trip(id: String!): Trip
}
这是我的解析器:
// some imports...
export default {
Query: {
async trip(_, { id }, ctx, info) {
const trip = await Trip.findById(id);
// const page = ???, count = ???
// work on fetch data...
return result;
},
};
如何获得 page
和 count
,它们被定义为 passengers
的嵌套参数?
您应该为 Trip
类型定义解析器,例如:
export default {
Query: {
async trip(_, { id }, ctx, info) {
const trip = await Trip.findById(id);
// const page = ???, count = ???
// work on fetch data...
return result;
},
Trip: {
async passengers(trip, { page, count }, ctx, info) {
...
},
}
};
在GraphQL中,不是"nested fields of a type"的概念,而是"the type of a field"的组合。 Query
类型的 trip
字段具有 Trip
类型,因此当您要使用 passengers
字段时,应将其视为 [=11] 下的字段=] 类型,不是 Query
类型的嵌套字段。