2017-12-01 1 views
0

私は入れ子になったGraphQL構造を持っています。入れ子にされたargを見ることができないのはなぜですか?

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で利用可能な制限がありません。私は間違って何をしていますか?私は何が欠けていますか?

+0

あなたはタイプにargsを配置できません、彼らはフィールドに移動します – vbranden

答えて

1

スキーマが正しく設定されておらず、フィールドに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 
}) 
関連する問題