繁体   English   中英

Apollo-client - 错误:无法在对象上找到字段allLinks({})(ROOT_QUERY)

[英]Apollo-client - Error: Can't find field allLinks({}) on object (ROOT_QUERY)

操作系统:Windows 10 Pro
浏览器:Opera 47.0.2631.71(PGO)
apollo-client:1.9.2
subscriptions-transport-ws:0.6.0
vue:2.4.2
vue-apollo:2.1.0-rc.5

所以,我在尝试使用graphcool端点运行查询时遇到上述错误。 只有在尝试对新创建的链接项进行投票时才会出现此问题。 这是什么问题?

完整的错误是:

 "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 } } ` 

码:

  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 }) } 

好的,所以通过将变量与ALL_LINKS_QUERY调用相关联来解决问题:

  const data = store.readQuery({ query: ALL_LINKS_QUERY, variables: { first: 5, skip: 0, orderBy: 'createdAt_DESC' } }) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM