为什么我看不到嵌套参数?

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
})