2
OS : 윈도우 10 프로
브라우저 : 오페라 47.0.2631.71 (PGO)
아폴로 클라이언트 : 1.9.2
구독-전송-WS : 0.6.0
VUE : 2.4.2
VUE - 아폴로 : 쿼리를 실행하려고 할 때아폴로 클라이언트 - 오류 : 찾을 수 없습니다 필드 allLinks ({}) 객체 (ROOT_QUERY)
그래서, 내가 위에서 언급 한 오류가 발생하고있어 2.1.0-rc.5 graphcool 끝점과 함께. 이 문제는 새로 생성 된 링크 항목을 up-vote하려고 할 때만 발생합니다. 여기서 문제는 무엇입니까?
전체 오류는 다음과 같습니다
"allLinks({\"first\":5,\"skip\":0,\"orderBy\":\"createdAt_DESC\"})": [
{
"type": "id",
"id": "Link:cj7ui2wn78joh0118s471fvgs",
"generated": false
},
{
"type": "id",
"id": "Link:cj7ue9p2pyk9e0118w9dc3eav",
"generated": false
},
{
"type": "id",
"id": "Link:cj7uaj5vwsa5b0126inei4jz0",
"generated": false
},
{
"type": "id",
"id": "Link:cj7toqpwstxmp0168exm6lihp",
"generated": false
},
{
"type": "id",
"id": "Link:cj7too3wgteq20154ax1agats",
"generated": false
}
],
"_allLinksMeta": {
"type": "id",
"id": "$ROOT_QUERY._allLinksMeta",
"generated": true
},
"allLinks({\"first\":5,\"skip\":5,\"orderBy\":\"createdAt_DESC\"})": [
{
"type": "id",
"id": "Link:cj7toe2egt9j40115r74dzmzi",
"generated": false
},
{
"type": "id",
"id": "Link:cj7to769uslpc0163giiymaeq",
"generated": false
},
{
"type": "id",
"id": "Link:cj7tdamdkb2c401074qhjw2ig",
"generated": false
},
{
"type": "id",
"id": "Link:cj7qlm4qb8vd501967t9jkvix",
"generated": false
},
{
"type": "id",
"id": "Link:cj7qawaic5wgz0133mzzqvmat",
"generated": false
}
]
}.
at readStoreResolver (readFromStore.js?f639:42)
at executeField (graphql.js?206d:74)
at eval (graphql.js?206d:31)
at Array.forEach (<anonymous>)
at executeSelectionSet (graphql.js?206d:26)
at graphql (graphql.js?206d:20)
at diffQueryAgainstStore (readFromStore.js?f639:75)
at readQueryFromStore (readFromStore.js?f639:18)
at TransactionDataProxy.readQuery (proxy.js?d9b2:114)
at VueComponent.updateStoreAfterVote (LinkItem.vue?42d3:51)
tryFunctionOrLogError @ errorHandling.js?e4be:7
data @ store.js?2706:115
apolloReducer @ store.js?8997:42
combination @ combineReducers.js?a3f5:120
computeNextEntry @ VM314:2
recomputeStates @ VM314:2
(anonymous) @ VM314:2
dispatch @ createStore.js?8c3f:165
dispatch @ VM314:2
(anonymous) @ ApolloClient.js?f973:237
(anonymous) @ store.js?8997:16
(anonymous) @ QueryManager.js?2cbe:142
Promise resolved (async)
(anonymous) @ QueryManager.js?2cbe:127
QueryManager.mutate @ QueryManager.js?2cbe:124
ApolloClient.mutate @ ApolloClient.js?f973:197
mutate @ vue-apollo.esm.js?1632:3069
voteForLink @ LinkItem.vue?42d3:38
boundFn @ vue.runtime.esm.js?a427:180
click @ LinkItem.vue?219f:18
invoker @ vue.runtime.esm.js?a427:1817
검색어 :
export const ALL_LINKS_QUERY = gql`
query AllLinksQuery($first: Int, $skip: Int, $orderBy: LinkOrderBy) {
allLinks(first: $first, skip: $skip, orderBy: $orderBy) {
id
createdAt
url
description
postedBy {
id
name
}
votes {
id
user {
id
}
}
}
_allLinksMeta {
count
}
}
`
코드 :
ALL_LINKS_QUERY 호출로 변수를 연결하여 voteForLink() {
const userId = localStorage.getItem(GC_USER_ID)
const voterIds = this.link.votes.map(vote => vote.user.id)
if (voterIds.includes(userId)) {
alert(`User (${userId}) already voted for this link.`)
return
}
const linkId = this.link.id
this.$apollo.mutate({
mutation: CREATE_VOTE_MUTATION,
variables: {
userId,
linkId
},
update: (store, { data: { createVote } }) => {
this.updateStoreAfterVote(store, createVote, linkId)
}
})
},
updateStoreAfterVote (store, createVote, linkId) {
// 1
const data = store.readQuery({
query: ALL_LINKS_QUERY
})
// 2
const votedLink = data.allLinks.find(link => link.id === linkId)
votedLink.votes = createVote.link.votes
// 3
store.writeQuery({ query: ALL_LINKS_QUERY, data })
}
야, 당신은 저를 저장! 이것을 실행하는 사람은'variables'를'writeQuery'에 전달해야한다는 것을 기억하십시오. – nachocab