概要
LambdaのNodeJS12で、DynamoDBへqueryを実行しているのですが、NextTokenを使用してカーソルトークンを使用して取得しようとしたのですが、レスポンスにNextTokenが含まれておリませんでした。
代わりに「LastEvaluatedKey」というキーが入っていました。
(queryの実行は正常に動作しItemsを取得できました)
普段AppSyncで開発を行うケースが多いので、AppSyncの時のようにNextTokenを使用してクエリーを実行できると想定していました。
DynamoDB SDKの公式ドキュメントを色々と見たのですが、そもそもNextTokenの説明が存在しませんでした。
推測
そもそも私が、下記のような勘違いをしている可能性があるかと...どなたかご教授を願いたいです。
- AppSyncの時にNextTokenを指定できるのは、AppSyncが提供している便利機能であり、そもそもDynamoDBの機能ではない
- NodeJSでDynamoDBSDKを使用しカーソルトークンのようなことを行う場合、LastEvaluatedKeyで前回位置から取得するようロジックを作成する必要有り
コード
js
1const AWS = require('aws-sdk'); 2const ENV = process.env.STAGE; 3const options = { region: 'ap-northeast-1' }; 4if (ENV === 'local') { 5 options.endpoint = 'http://localhost:8080'; 6} 7const LIMIT = 30 8const client = new AWS.DynamoDB(options); 9const documentClient = new AWS.DynamoDB.DocumentClient(options); 10 11 12const params = { 13 TableName: "ExampleTable", 14 IndexName: 'ExampleIndex', 15 KeyConditionExpression: '#pK = :pKV', 16 ScanIndexForward: false, 17 ExpressionAttributeNames: { 18 '#pK': 'Id', 19 }, 20 ExpressionAttributeValues: { 21 ':pKV': 'xxxx-xxxxx-xxxx' 22 }, 23 Limit: LIMIT 24 }; 25 26 // NextTokenの指定方法が不明... 27 if (nextToken) _.assign(params, { 28 NextToken: nextToken 29 }) 30 31 try { 32 return await documentClient.query(params).promise() 33 } catch (e) { 34 throw(e) 35 }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。