GraphQL-RubyでDatetime
型を使用する方法を知らないのは私だけではありません。 https://github.com/rmosolgo/graphql-Ruby-demo/issues/27 、ご覧のとおり、私のような18人がいます。
このような一部のフィールドで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
誰かがそれをよりよく説明できますか?
GraphQL::Types::ISO8601DateTime
最近、graphql-Rubyに追加されました。
使用例:field :created_at, GraphQL::Types::ISO8601DateTime, null: false
型宣言は適切に機能するはずです。貼り付けた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
より良い説明があるかどうかはわかりませんが、上からコードを貼り付けて自分のスカラーを定義することで機能しました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