2016-12-19 6 views
1

私はこれを1時間以上苦労していますが、動作させることはできません。GraphQLを使用してすべてのユーザーモデルを取得する方法

私はGraphqlのRuby実装をRailsと共に使用しています。私はGraphQLでUser.allを実行しようとしています。フィールドユーザーを定義する次のQueryTypeがあります。

QueryType = GraphQL::ObjectType.define do 
    name "Query" 
    description "The query root for this schema" 

    field :users do 
    types[IndexUserType] 

    resolve ->() { 
     User.all 
    } 
    end 
end 

のように定義IndexUserTypeは、次のとおりです。

IndexUserType = GraphQL::ObjectType.define do 
    name "IndexUserType" 
    description "An Index User" 
    field :firstname, types.String 
end 

と、私は次のクエリを使用して彼らのファーストネームを持つすべてのユーザーを取得しようとしている:

通常、私はできると
query={ users { firstname } } 

Has-Many関係については以下のようになりますが、これは機能しません。これは、 'obj'が親なしで設定できないためです。

resolve -> (obj, args, ctx) { 
    obj.cousins 
} 

答えて

4

試行錯誤の多くの後、私は次のようにすべて取得解決するために管理:あなたのオリジナルのソリューションで

field :users, types[IndexUserType] do 
    resolve -> (obj, args, ctx) { 
    User.all 
    } 
end 
2

、あなたは、ブロック内のフィールドの属性を定義しては、あなたが行うことで型を宣言する必要があることを実行します。

field :users do 
    type types[IndexUserType] # <-- Note the addition of 'type' 
    ... 
end 

あなたの第二の溶液はまた、作品「フィールド」に引数リストに同じ情報を渡します。これはInstanceDefinableミックスインでサポートされています。フィールドを定義する方法の追加の例を参照するには、GraphQL::Fieldのドキュメントを参照してください。もっと深く掘り下げたい場合は、GraphQL::Define::InstanceDefinableを見てください。このパターンは、graphql-ruby gemのフィールドや他のクラスでこのパターンがどのように使われているかを理解するのに役立ちます。

参照してください:

http://www.rubydoc.info/github/rmosolgo/graphql-ruby/GraphQL/Field http://www.rubydoc.info/github/rmosolgo/graphql-ruby/GraphQL/Define/InstanceDefinable

関連する問題