Не удается зарегистрировать данные из JSON-server API с помощью GraphQL

#reactjs #express #graphql #axios #json-server

#reactjs #экспресс #graphql #axios #json-сервер

Вопрос:

Я создал API с помощью JSON-сервера и пытаюсь извлечь из него данные с помощью клиента React-Apollo.

Я пытаюсь зарегистрировать данные из API на консоли с помощью тега запроса, реструктурировать и распечатать переменную данных с помощью console.log() .

Я понятия не имею, почему функция получает print через console.log() .

У меня есть текущая настройка:

  • Сервер JSON запущен на ПОРТУ 4000
  • Сервер запущен на ПОРТУ 5000
  • Клиент запущен на ПОРТУ 3000

Я уже использую инструмент CORS

Ниже приведен мой компонент:

 const BOOKS_QUERY = gql`
    query BooksQuery {
        books {
            title
            author
            editionYear
        }
    }
`;

<Query query={BOOKS_QUERY}>
  {({ loading, error, data }) => {
     if (loading) return <h4>Loading...</h4>;
     if (error) console.log(error);
     console.log(data);

    return <h1>test</h1>;
  }}
</Query>

  

Приведенный ниже контент является кодом для моей схемы:

 
const BookType = new GraphQLObjectType({
    name: 'Book',
    fields: () => ({
        id: { type: GraphQLInt },
        title: { type: GraphQLString },
        author: { type: GraphQLString },
        editionYear: { type: GraphQLInt }
    })
});

//Root Query

const RootQuery = new GraphQLObjectType({
    name: 'RootQueryType',
    fields: {
        books: {
            type: new GraphQLList(BookType),
            resolve(parent, args) {
                return axios.get('http://localhost:4000/books').then((res) => res.data);
            }
        },
        book: {
            type: BookType,
            args: {
                id: { type: GraphQLInt }
            },
            resolve(parent, args) {
                return axios.get(`http://localhost:4000/books/${args.id}`).then((res) => res.data);
            }
        }
    }
});

module.exports = new GraphQLSchema({
    query: RootQuery
});


  

API:

 
{
    "books": [
        {
            "id": "1",
            "title": "Java How To Program",
            "author": "Deitel amp; Deitel",
            "editionYear": "2007"
        },
        {
            "id": "2",
            "title": "Patterns of Enterprise Application Architecture",
            "author": "Martin Fowler",
            "editionYear": "2002"
        },
        {
            "id": "3",
            "title": "Head First Design Patterns",
            "author": "Elisabeth Freeman",
            "editionYear": "2004"
        },
        {
            "id": "4",
            "title": "Internet amp; World Wide Web: How to Program",
            "author": "Deitel amp; Deitel",
            "editionYear": "2007"
        }
    ]
}

  

Я ожидаю, что данные API будут регистрироваться только на консоли.

Позже я выведу эти данные на экран.

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

1. какой у вас запрос BOOKS_QUERY? И видите ли вы, что вызов API на вкладке сеть возвращает результаты?

2. Привет, Назим, спасибо, что вернулся. Я обновил компонент с помощью BOOK_QUERY

3. Отвечая на ваш последний вопрос… Да, он возвращает результаты