Я слежу за учебными пособиями по React-Apollo и Node.js GraphQL на https://www.howtographql.com/ и смог запустить демо.
Теперь я хотел бы вернуть результат моего запроса в виде массива.
Мой файл schema.graphql выглядит так:
type Query{
pullTickets (where: TicketWhereInput): [Ticket!]!
}
И решатель выглядит так:
const resolvers = {
Query: {
pullTickets: (root, args, context, info,) => {
return context.db.query.tickets({}, info)
}
}
}
Что я пробовал до сих пор:
import React, { Component } from 'react';
import Query from "react-apollo/Query";
import gql from "graphql-tag";
const GET_TICKETS = gql`
query getTickets($startDate: DateTime!, $endDate: DateTime!) {
pullTickets (where: {
AND:[{DateCloseDate_gt: $startDate}, {DateCloseDate_lt: $endDate}]})
{
id
}
}
`;
export default function GetTickets ( startDate, endDate ) {
var temp = [];
<Query query = {GET_TICKETS} variables = {{ startDate, endDate }} >
{({ loading, error, data }) => {
if (loading) return 'Loading...';
if (error) return `Error!: ${error}`;
// This doesn't seem to do anything
temp = data.pullTickets
}}
</Query>
// temp is showing up as "undefined" in the console
console.info(temp);
return temp
}
Я должен получить список билетов, но я получаю неопределенный.





У меня была такая же проблема, я хотел использовать запрос без использования jsx, решение - использовать ApolloClient, в какой-то момент в вашем приложении вы будете использовать ApolloProvider, который вам нужно будет предоставить ему экземпляр ApolloClient в качестве опоры, все u необходимо экспортировать этого клиента, и затем вы сможете использовать его в любом другом месте, а не только в ApolloProvider. Вот пример
здесь инициализируется клиент Apollo.
import { ApolloClient } from 'apollo-client';
.
.
.
initApolloClient ({ uri }) => {
.
.
.
return new ApolloClient({
link,
cache,
});
}
export default initApolloClient
import initApollo from './initApollo';
client = initApollo({ uri: 'http://localhost:4000' });
client.query(({query: SOME_QUERY, variables: {id: 2}) => {
// return data
})
это отвечает на ваш вопрос?