2016-04-23 8 views
2

私はGraphQLを使い始めています。私はGraphQL Typeにデータを解決しようとしています。私は以下がなぜ機能しないのか分からない。どのようにGraphQLListとGraphQLInterfaceTypeを正しく使用しますか?

は、このデータを考える:

{ 
    "kind": "youtube#searchListResponse", 
    "etag": "\"CuSCwMPVmgi8taDtE2LV6HdgkN0/USvbH1nSht52L3y8EP6BIwVRhgM\"", 
    "items": [{ 
     "kind": "youtube#searchResult", 
     "etag": "\"CuSCwMPVmgi8taDtE2LV6HdgkN0/xpywjUARlQ0Ai4IucTvXRNCfTcE\"", 
     "id": { 
      "kind": "youtube#video", 
      "videoId": "zvRbU1Ql5BQ" 
     } 
    }] 
} 

は、これは、入力された取得するためのコードです。

const ItemType = new GraphQLInterfaceType({ 
    name: 'Item', 
    fields: { 
    kind: { type: StringType }, 
    }, 
}); 

const YoutubeDataType = new GraphQLObjectType({ 
    name: 'PublicYoutube', 
    fields: { 
    kind: { type: new GraphQLNonNull(StringType) }, 
    etag: { type: new GraphQLNonNull(StringType) }, 
     items: { type: new GraphQLList(ItemType) }, // returns null 
    // items: { type: StringType }, // returns "[object Object]"... so it's being passed in 
    }, 
}); 

これはGraphiQLを介して返されるものです。 itemsnullと等しいのはなぜですか?

{ 
    "data": { 
    "publicyoutube": { 
     "kind": "youtube#searchListResponse", 
     "etag": "\"CuSCwMPVmgi8taDtE2LV6HdgkN0/OspGzY61uG9sSD_AWlfwkTBjG-8\"", 
     "items": [ 
     null 
     ] 
    } 
    }, 
    "errors": [ 
    { 
     "message": "Cannot read property 'length' of undefined" 
    } 
    ] 
} 

ありがとうございました。

答えて

3

GraphQLInterfaceTypeの目的を誤解し、間違った方法を使用していました。 GraphQLInterfaceTypeを使用する代わりに、GraphQLObjectTypeでなければなりません。

const ItemType = new GraphQLObjectType({ 
    name: 'Item', 
    fields: { 
    kind: { type: StringType }, 
    }, 
}); 

const YoutubeDataType = new GraphQLObjectType({ 
    name: 'PublicYoutube', 
    fields: { 
    kind: { type: new GraphQLNonNull(StringType) }, 
    etag: { type: new GraphQLNonNull(StringType) }, 
     items: { type: new GraphQLList(ItemType) }, // returns null 
    // items: { type: StringType }, // returns "[object Object]"... so it's being passed in 
    }, 
}); 

出力:

{ 
    "data": { 
    "publicyoutube": { 
     "kind": "youtube#searchListResponse", 
     "etag": "\"CuSCwMPVmgi8taDtE2LV6HdgkN0/-aZNXBVLYOJwPMdleXmbTlJSo_E\"", 
     "items": [ 
     { 
      "kind": "youtube#searchResult" 
     } 
     ] 
    } 
    } 
} 
関連する問題