2017-05-11 3 views
1

커서의 페이지 매김을 구현하고 문서의 예제를 따라했지만 계속 오류 메시지가 표시됩니다. '쿼리'필드에서 '커서'를 쿼리 할 수 ​​없음 .Apollo/GraphQL을 사용한 커서 페이지 매김을 통해 계속 오류가 발생합니다.

"커서"필드가 Accounts 스키마에 실제로 존재하지 않는다는 것을 알고 있지만 ... 나는 문서에서 읽은 것부터 ... gql 쿼리의 어딘가에 포함시켜야합니다. . 또한, 내가 무엇인지 놓치고 있는지 확실하지 않지만 커서 질의를 허용하는 쿼리를 구조화하는 방법에 대해 약간 혼란 스럽다.

원래 쿼리 : (이 "계정에 커서 필드를 찾을 수 없습니다"제공 오류)

const AccountsQuery = gql` 
    query Accounts($cursor: String){ 
    accounts(cursor: $cursor) { 
     cursor 
     accountName 
     accountId 
    } 
    } 
`; 

:

const AccountsQuery = gql` 
    query { 
    accounts { 
     accountName 
     accountId 
    } 
    } 
`; 

새 쿼리 (이 작업을 실행하는 나에게 오류를 제공하지 않습니다) GraphQL 래퍼 :

export default graphql(AccountsQuery, { 
    props: ({ data: { loading, cursor, accounts, fetchmore } }) => ({ 
    loading, 
    accounts, 
    loadMoreEntries() { 
     return fetchmore({ 
     query: AccountsQuery, 
     variables: { 
      cursor: cursor, 
     }, 
     updateQuery: (previousResult, { fetchMoreResult }) => { 
      const previousEntry = previousResult.entry; 
      const newAccounts = fetchMoreResult.accounts; 

      return { 
      cursor: fetchMoreResult.cursor, 
      entry: { 
       accounts: [...newAccounts, ...previousEntry] 
      }, 
      }; 
     }, 
     }) 
    } 
    }) 
})(QuickViewContainer); 

커서의 페이지 매김이 제대로 작동하는 데 도움이 될 것입니다.

+0

커서가 서버의 쿼리 정의에 누락되었습니다. 어떻게 생겼어? –

답변

2

cursor 필드와 같은 소리가 서버에 구현되지 않습니다. 귀하의 Account 유형과 같이 해당 필드를 가질 필요가 :

커서 매김을 수행하는 방법에 대한 협약
Account { 
    cursor 
    accountName 
    accountId 
} 

, 표준 릴레이 사양을 따라야합니다. 릴레이 호환 GraphQL API에서 read more about how it's implemented here을 사용할 수 있습니다.

이 쿼리는 다음과 같이 보일 것입니다 :

query { 
    viewer { 
    allAccounts { 
     edges { 
     cursor 
     node { 
      accountName 
      accountId 
     } 
     } 
    } 
    } 
} 

각 에지 계정은 노드에 해당하고 자동으로 채워 서버에서 세계적으로 고유 불투명 커서 ID가 될 것입니다 커서가 있습니다.

희망이 도움이됩니다.

관련 문제