2017-05-11 9 views
1

カーソルのページ設定を実装してドキュメントの例に従っていますが、エラーが表示され続けます。'クエリ "フィールドで" cursor "をクエリできません。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を持つことになるカーソルを持っています。

希望すると便利です。

関連する問題