2017-12-24 29 views
3

GraphQL-Ruby에서 Datetime 유형을 사용하는 방법을 모른다는 사람은 https://github.com/rmosolgo/graphql-ruby-demo/issues/27입니다. 18 명이 나 같은 것을 볼 수 있습니다.graphql-ruby, 날짜 또는 날짜 유형

어떻게 Datetime을 이와 같은 일부 필드에 사용할 수 있습니까?

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 

누군가가 그것을 더 잘 설명 할 수

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)를 사용해야?

답변

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에 따르면, 5 종류가 있습니다 (INT, 문자열, 플로트, 부울, ID)는 types.DateTime를 사용할 수 없음을 의미 방법으로 정의했다. 당신이 위의가에 대해 언급 한대로

, 당신은 document 보석의를 참조하고 구현할 수 DateTimeType을 사용자 지정하려면 ( date_time_type.rb)를, 당신은 다음과 같이 사용할 수 있습니다 :

field :birth_date, Types::DateTimeType