2017-01-06 6 views
0

私は、反応スターターキットの定型文でexpress graphqlを使用していますが、エラーが発生したときに独自のネストされたスキーマを定義しようとしていますError: Availability.rooms field type must be Output Type but got: undefined.最初の深さフィールドで解決します - 私はフィールドを入れ子フィールド型にし、解決策をネストされたフィールドに移動するように変更しました - しかし、私は構文エラーがあると思います。GraphQLスキーマを定義するときにフィールドタイプを取得する必要があります。

schema.js

import { 
    GraphQLSchema as Schema, 
    GraphQLObjectType as ObjectType, 
} from 'graphql'; 

import hotel from './queries/hotel'; 

const schema = new Schema({ 
    query: new ObjectType({ 
    name: 'Query', 
    fields: { 
     hotel, 
    }, 
    }), 
}); 

export default schema; 

hotel.js

import { 
    GraphQLObjectType as ObjectType, 
    GraphQLList as List, 
    GraphQLString as StringType, 
    GraphQLBoolean as BooleanType, 
    GraphQLInt as IntType, 
    GraphQLNonNull as NonNull, 
} from 'graphql'; 

import { checkAvailability } from './hotels'; 

const RoomType = new ObjectType({ 
    name: 'Room', 
    fields: { 
    name: { type: new NonNull(StringType) }, 
    roomTypeCategory: { type: new NonNull(StringType) }, 
    nights: { type: new NonNull(IntType) }, 
    isAvailable: { type: new NonNull(BooleanType) }, 
    startDate: { type: new NonNull(StringType) }, 
    endDate: { type: new NonNull(StringType) }, 
    availability: { type: new List(BooleanType) }, 
    }, 
}); 

const AvailabilityType = new ObjectType({ 
    name: 'Availability', 
    args: { 
    hotelId: { type: new NonNull(StringType) }, 
    checkIn: { type: new NonNull(StringType) }, 
    checkOut: { type: new NonNull(StringType) }, 
    numberOfAdults: { type: new NonNull(IntType) }, 
    }, 
    fields: { rooms: new List(RoomType) }, 
    async resolve({ request }, { hotelId, checkIn, checkOut, numberOfAdults }) { 
    const rooms = await checkAvailability({ 
     hotelId, 
     checkIn, 
     checkOut, 
     numberOfAdults, 
    }); 
    return { rooms }; 
    }, 
}); 

export default { 
    type: new ObjectType({ 
    name: 'Hotels', 
    fields: { 
     availability: { type: AvailabilityType }, 
    }, 
    }), 
}; 

答えて

0

それは次のようになります。

fields: { 
    rooms: {type: new List(RoomType) } 
} 

type(例えばresolve)以外の多くの性質を得ることができる場として、 typeプロパティを持つオブジェクトを渡す必要があります。他の人のためにあなたがやったように。

関連する問題