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 },
},
}),
};