Запись резольверов для определений вложенных типов - PullRequest
1 голос
/ 07 апреля 2019

Предположим, у меня есть следующее определение типа для моего GraphQL API:

const typeDef = `
    type Book {
         title: String
         author: Author
         likes: Int
    }

    type Author {
         id: String
         name: String
         age: Int
         books: [Book]
    }

    type Query{
         books(authorid: String!): Book
    }
`

Тогда, сколько распознавателей мне нужно для этого?Должен ли я обрабатывать этот запрос только с одним распознавателем books и возвращать все книги и информацию об авторе или мне нужно создать много обработчиков, таких как Query -> books, Book -> author и Author -> books?Я не уверен, как модульная схема и распознаватель работают вместе.

1 Ответ

0 голосов
/ 12 апреля 2019

Независимо от того, какой тип (Книга, Автор и т. Д.) Или ввод, который вы используете, вам нужно предоставить.

const schema = ` 
    type Mutation {
        mutatePost(postId:Int) :Int
    }
    type Query {
        hello: String
        posts: [String]
        books(authorId: String!): Book
    }
  `

Вам нужно использовать то же имя, которое вы определили в Query, должно быть одинаковым в resolver

   const resolvers = {
        Query: {
        async hello() {
            return 'Hello';
        },
        async posts() {
            return ['Hello', 'World];
        },
        async books(_, { authorId }) {
            //Return data which you is defined in type Book
            //return Book
        }
        },
        Mutation: {
            async mutatePost(_, {
            postId
            }, context) {
            //return Integer
            }
        },
    }

Только для каждого запроса и мутации требуется queryResolver и mutationResolver

...