为什么我看不到嵌套参数?
Why can't I see nested args?
我有一个嵌套的 GraphQL 结构。
export default new GraphQLObjectType({
name: "Disbursement",
fields: () => ({
disbursementId: {
type: new GraphQLNonNull(GraphQLID)
}
transaction: {
type: Transaction
}
})
});
export default new GraphQLObjectType({
name: "Transaction",
args: {
limit: {
type: GraphQLInt,
},
},
fields: () => ({
transactionId: {
type: GraphQLID
}
})
});
当我尝试查询 Disbursement
时,我希望能够将限制传递给 Transaction
query {
allDisbursements {
transaction(limit:10) {
transactionId
}
}
}
但是我在 Transaction
上没有可用的限制。我究竟做错了什么?我错过了什么?
您的模式设置有点错误,您需要将 args 放在字段上。你想要更像下面的东西。查看启动板示例 https://launchpad.graphql.com/0vrj5p80k5
import {
GraphQLObjectType, GraphQLNonNull, GraphQLID, GraphQLSchema, GraphQLInt, GraphQLList } from 'graphql'
const Transaction = new GraphQLObjectType({
name: "Transaction",
fields: () => ({
transactionId: {
type: GraphQLID
}
})
})
const Disbursement = new GraphQLObjectType({
name: "Disbursement",
fields: () => ({
disbursementId: {
type: new GraphQLNonNull(GraphQLID)
},
transaction: {
args: {
limit: {
type: GraphQLInt,
},
},
type: new GraphQLList(Transaction),
resolve (source, args) {
return args.limit ? source.transaction.slice(0, args.limit) : source.transaction
}
}
})
})
const Query = new GraphQLObjectType({
name: 'Query',
fields: {
allDisbursements: {
type: new GraphQLList(Disbursement),
resolve () {
return [
{ disbursementId: 1, transaction: [{ transactionId: 1 }, { transactionId: 2 }] },
{ disbursementId: 2, transaction: [{ transactionId: 5 }, { transactionId: 3 }] }
]
}
}
}
})
// Required: Export the GraphQL.js schema object as "schema"
export const schema = new GraphQLSchema({
query: Query
})
我有一个嵌套的 GraphQL 结构。
export default new GraphQLObjectType({
name: "Disbursement",
fields: () => ({
disbursementId: {
type: new GraphQLNonNull(GraphQLID)
}
transaction: {
type: Transaction
}
})
});
export default new GraphQLObjectType({
name: "Transaction",
args: {
limit: {
type: GraphQLInt,
},
},
fields: () => ({
transactionId: {
type: GraphQLID
}
})
});
当我尝试查询 Disbursement
时,我希望能够将限制传递给 Transaction
query {
allDisbursements {
transaction(limit:10) {
transactionId
}
}
}
但是我在 Transaction
上没有可用的限制。我究竟做错了什么?我错过了什么?
您的模式设置有点错误,您需要将 args 放在字段上。你想要更像下面的东西。查看启动板示例 https://launchpad.graphql.com/0vrj5p80k5
import {
GraphQLObjectType, GraphQLNonNull, GraphQLID, GraphQLSchema, GraphQLInt, GraphQLList } from 'graphql'
const Transaction = new GraphQLObjectType({
name: "Transaction",
fields: () => ({
transactionId: {
type: GraphQLID
}
})
})
const Disbursement = new GraphQLObjectType({
name: "Disbursement",
fields: () => ({
disbursementId: {
type: new GraphQLNonNull(GraphQLID)
},
transaction: {
args: {
limit: {
type: GraphQLInt,
},
},
type: new GraphQLList(Transaction),
resolve (source, args) {
return args.limit ? source.transaction.slice(0, args.limit) : source.transaction
}
}
})
})
const Query = new GraphQLObjectType({
name: 'Query',
fields: {
allDisbursements: {
type: new GraphQLList(Disbursement),
resolve () {
return [
{ disbursementId: 1, transaction: [{ transactionId: 1 }, { transactionId: 2 }] },
{ disbursementId: 2, transaction: [{ transactionId: 5 }, { transactionId: 3 }] }
]
}
}
}
})
// Required: Export the GraphQL.js schema object as "schema"
export const schema = new GraphQLSchema({
query: Query
})