Объект массива GraphQL внутри объекта

#reactjs #graphql

#reactjs #graphql

Вопрос:

Я выполняю вызов json из API, чтобы получить список сообщений. Моя проблема в том, что внутри каждого ответа объекта post у меня есть другой массив объектов для категории post. Как получить категорию объекта массива с помощью Graphql?

я пытаюсь это сделать, но возвращаю мне ошибку

 const Cat = new ObjectType({
name: 'CatItem',
description: 'cat',
fields: () => ({


    id: {
        type: new NonNull(ID),
        description: 'cat',
        resolve: (root) => root.id
    },
    slug: {
        type: StringType,
        description: 'cat',
        resolve: (root) => root.slug
    },
    name: {
        type: StringType,
        description: 'cat',
        resolve: (root) => root.name
    },


}),
});

const PostType = new ObjectType({
name: 'PostItem',
description: 'post',
fields: () => ({
    id: {
        type: new NonNull(ID),
        description: 'post',
        resolve: (root) => root.id
    },
    slug: {
        type: StringType,
        description: 'post',
        resolve: (root) => root.slug
    },
    title: {
        type: StringType,
        description: 'post',
        resolve: (root) => root.title
    },
    content: {
        type: StringType,
        description: 'post',
        resolve: (root) => root.content
    },
    categories: {
        type: new List(CatType),
        description: 'post',
        resolve: (root) => root.category
    },
    date: {
        type: StringType,
        description: 'post',
        resolve: (root) => root.date
    },
    authorName: {
        type: StringType,
        description: 'post',
        resolve: (root) => root.display_name
    },
    authorAvatar: {
        type: StringType,
        description: 'post',
        resolve: (root) => root.user_avatar
    },
}),
});
 

Спасибо

Комментарии:

1. В общем, если что-то выдает вам ошибку, вы также должны опубликовать, что это за ошибка. Это помогает другим понять, что не так.

2. Мое сообщение об ошибке: поле «категории» типа «[CatItem]» должно иметь дополнительный выбор

Ответ №1:

Вы получаете это сообщение, потому что вам нужно сообщить GraphQL, какие поля (подвыборку) внутри categories вы хотите получить.

Вероятно, вы пытаетесь выполнить запрос примерно так:

 {
  post(id: 1) {
    title
    categories
  }
}
 

Но вам нужно указать поля для возврата (подвыборки) categories , например, следующие:

 {
  post(id: 1) {
    title
    categories {
      name
    }
  }
}  
 

Кстати, есть отличный инструмент под названием GraphiQL, который особенно полезен при начале написания запросов. Возможно, вы захотите взглянуть на промежуточное программное обеспечение express-graphql.

Комментарии:

1. Я пытаюсь получить все сообщения, но внутри каждого сообщения у меня есть объект массива каждой категории, подобный этому.