Я новичок как в Apollo, так и в GraphQL. Я слежу за это apollo-link-state-tutorial и натыкаюсь на камень преткновения.
Я установил свою ссылку со свойством currentGame по умолчанию.
const stateLink = withClientState({
cache: stateCache,
defaults: {
currentGame: {
__typename: 'currentGame',
teamAScore: 0
}
}
})
Я использую его в своем клиенте.
const client = new ApolloClient({
stateCache,
link: stateLink,
...
})
Я определяю запрос GraphQL следующим образом:
const getCurrentGame = gql`
query {
currentGame @client {
teamAScore
}
}
`
Я подключаю его к реквизитам моего компонента.
export default compose(
graphql(getCurrentGame, {
props: ({ data: { currentGame }}) => ({
currentGame
})
})
)
Это вызывает ошибку в консоли.
[GraphQL error]: Message: Field 'currentGame' doesn't exist on type 'Query', Location: [object Object], Path: undefined
Я просмотрел свой код и не смог определить, что, безусловно, является опечаткой или простой ошибкой. Как я могу отладить это сообщение об ошибке или в чем его проблема?
Обновлять: Я попытался добавить распознаватель, как предложил Tal Z, но все еще получаю то же сообщение об ошибке.
const stateCache = new InMemoryCache()
const stateLink = withClientState({
cache: stateCache,
resolvers: {
Query: {
currentGame: () => {
return {}
}
}
},
defaults: defaultState
})
Как бы то ни было, в большинстве из немногих примеров репозиториев, которые я нашел, есть запросы для полей, для которых не определены преобразователи. Например, это запросы для элементов списка дел, но единственный определенный преобразователь предназначен для мутации.
Я не видел этого варианта, я просто попробовал его только для сети и только для кеша, и он не дал никакого эффекта.
Можете ли вы добавить свою конфигурацию apolloClient?





Ну, разобрался ... это ломается:
import ApolloClient from 'apollo-boost'
Это работает:
import ApolloClient from 'apollo-client'
Понятия не имею, в чем разница.
apollo-boost еще не пробовал. Ваш опыт может избавить меня от разочарования во время попытки. Спасибо!
Нет, спасибо за попытку, я еще не слышал о fetchPolicy, так что это тоже было здорово!
Вы пробовали использовать
fetchPolicy: 'network-only'в качестве одного из вариантов запроса?