2017-12-24 15 views
3

GraphQL-RubyでDatetimeタイプを使用する方法がわからないのは私だけではありません:https://github.com/rmosolgo/graphql-ruby-demo/issues/27私のような人が18人いることがわかります。graphql-ruby、日付または曜日型

このようなフィールドにDatetimeを使用するにはどうすればよいですか?

Types::PlayerType = GraphQL::ObjectType.define do 
    name 'Player' 

    field :id, !types.ID 
    field :birth_date, types.Datetime #or what? 
    field :death_date, !types.Datetime #or what? 
    field :note, types.String 
end 

たぶん私はこの(https://github.com/howtographql/graphql-ruby/blob/master/app/graphql/types/date_time_type.rb)を使用する必要があります。

date_time_type.rb

Types::DateTimeType = GraphQL::ScalarType.define do 
    name 'DateTime' 

    coerce_input ->(value, _ctx) { Time.zone.parse(value) } 
    coerce_result ->(value, _ctx) { value.utc.iso8601 } 
end 

誰かがそれをよりよく説明できますか?

答えて

0

はわからない私はより良い説明がありますが、私はそれは私自身のスカラーDateTimeTypeを定義するために上記のコードを貼り付けて仕事になりました:

DateTimeType = GraphQL::ScalarType.define do 
    name 'DateTime' 

    coerce_input ->(value, _ctx) { Time.zone.parse(value) } 
    coerce_result ->(value, _ctx) { value.utc.iso8601 } 
end 

MyType = ::GraphQL::ObjectType.define do 
    name 'MyType' 
    field :when, type: !DateTimeType 
end 
2

型宣言が正常に動作するはずです。あなたが貼り付けたDateTimeTypeは "Types"モジュールにあることに注意してください。このようにそれを使用します。

Types::PlayerType = GraphQL::ObjectType.define do 
    name 'Player' 

    field :id, !types.ID 
    field :birth_date, Types::DateTimeType 
    field :death_date, Types::DateTimeType 
    field :note, types.String 
end 
1

source codeによると、あなたはtypes.DateTimeを使用することはできませんメソッドとして定義されている唯一の5種類(INT、文字列、フロート、ブール、ID)があります。 DateTimeTypeをカスタマイズするには

、あなたは宝石のそのdocumentを参照すると、あなたは(date_time_type.rb)について言及した上記のように実装し、その後、あなたはこのようにそれを使用することができますできます

field :birth_date, Types::DateTimeType

関連する問題