はじめに
amplify graphqlにて、nextTokenを利用してdynamoDBから次のデータを取得しようとしたらエラーになって取得できなかった
スキーマ定義
export const mainList = /* GraphQL */ `
query MainList(
$user_name: String
$createdAt: ModelStringKeyConditionInput
$sortDirection: ModelSortDirection
$filter: ModelOcrImageFilterInput
$limit: Int
$nextToken: String
) {
mainList(
user_name: $user_name
createdAt: $createdAt
sortDirection: $sortDirection
filter: $filter
limit: $limit
nextToken: $nextToken
) {
items {
id
user_name
createdAt
owner
}
nextToken
}
}
`;
エラーメッセージ
Object {
"data": Object {
"mainList": null,
},
"errors": Array [
Object {
"data": null,
"errorInfo": null,
"errorType": "DynamoDB:UserIllegalArgumentException",
"locations": Array [
Object {
"column": 3,
"line": 2,
"sourceName": null,
},
],
"message": "com.amazonaws.deepdish.common.pagination.InvalidPaginationTokenException: Invalid pagination token given.",
"path": Array [
"mainList",
],
},
],
}
結果
amplify/cliのバージョンが低いことが原因でした。
$ npm ls -g --depth=0
/Users/xxxxxxxx/.nvm/versions/node/v10.14.2/lib
├── @aws-amplify/cli@4.13.3
├── expo-cli@3.13.1
└── npm@6.4.1
github issue にも載っていた。
https://github.com/aws-amplify/amplify-cli/issues/3411
amplify/cli のバージョンを4.13.4以上に上げて、再度、amplify push
することで、無事取得することができました。