AWS AppSync - директиву aws_subscribe нельзя использовать в FIELD_DEFINITION

Я пытаюсь разобраться с AWS AppSync. Я новичок в GraphQL. У меня есть следующий GraphQL:

type Mutation {
    deleteParcel(geoHash: String!, type_id: String!): Parcel
    addParcel(input: ParcelInput!): Parcel
    batchAddParcels(parcels: [ParcelInput]): [Parcel]
}

type Parcel {
    geoHash: String!
    type_id: String!    
}

type ParcelConnection {
    items: [Parcel]
}

input ParcelInput {
    geoHash: String!
    type_id: String!    
}

input ParcelsInput {
    parcels: [ParcelInput]
}

type Query {
    getNearbyParcels(geoHash: String!): ParcelConnection
}

type Subscription {
    onAddParcel(geoHash: String, type_id: String): Parcel
        @aws_subscribe(mutations: ["addParcel"])
    onBatchAddParcels(geoHash: String): Parcel
        @aws_subscribe(mutations: ["batchAddParcels"])
    onDeleteParcel(geoHash: String, type_id: String): Parcel
        @aws_subscribe(mutations: ["deleteParcel"])
}

schema {
    query: Query
    mutation: Mutation
    subscription: Subscription
}

Кажется, что на консоли AWS все настроено нормально. Я получаю schema.json и запускаю команду:

aws-appsync-codegen generate AWSGraphQL.graphql --schema schema.json --output AppsyncAPI.swift и получите ответ:

../SnatchHQ/snatch_appsync/AppSync/AWSGraphQL.graphql: Directive "aws_subscribe" may not be used on FIELD_DEFINITION. .../SnatchHQ/snatch_appsync/AppSync/AWSGraphQL.graphql: Directive "aws_subscribe" may not be used on FIELD_DEFINITION. .../SnatchHQ/snatch_appsync/AppSync/AWSGraphQL.graphql: Directive "aws_subscribe" may not be used on FIELD_DEFINITION. error: Validation of GraphQL query document failed

Кто-нибудь может помочь?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
1 432
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если файл AWSGraphQL.graphql является вашей схемой API GraphQL, то это объясняет проблему. Что вам нужно сделать, так это определить файл *.graphql, который определяет ваши операции запроса, изменения и подписки на основе вашего GraphQL API. Например, следующие определения запросов будут соответствовать вашей схеме

mutation AddParcel($geoHash: String!, $type_id: String!) {
    addParcel(input: {
        geoHash: $geoHash
        type_id: $typeId
    }) {
        ...Parcel
    }
}

query GetNearbyParcels($geoHash: String!) {
    getNearbyParcels(
        geoHash: $geoHash
    ) {
        ...ParcelConnection
    }
}

subscription OnAddParcel {
    onAddParcel {
        ...Parcel
    }
}

fragment Parcel on Parcel {
    geoHash
    type_id
}

fragment ParcelConnection on Parcel Connection {
    items {
        ...Parcel
    }
}

Предполагая, что вы назвали его чем-то вроде parcels.graphql, вы можете затем вызвать следующее, чтобы сгенерировать Swift-реализацию мутации AddParcel, запроса GetNearbyParcels и подписки OnAddParcel.

aws-appsync-codegen generate parcels.graphql \ 
    --schema schema.json \
    --output AppSyncParcelsAPI.swift

Другие вопросы по теме