6

maxcount 10 の jsp で検索結果を表示する必要があり、ページネーション機能として前後にトラバースするページネーションが必要です。

Dynamodb には lastevaluatedkey がありますがlastevaluatedKeyによって次の結果セットに移動することはできますが、前のページに戻ることは役に立ちません。

誰でもこれについて助けてください。

Java SPRING と DynamoDB をスタックとして使用しています。

ありがとうサティア

4

4 に答える 4

4

レイの答えに基づいて、これが私がやったことです。 sortIdソートキーです。

// query a page of items and create prev and next cursor
// cursor idea from this article: https://hackernoon.com/guys-were-doing-pagination-wrong-f6c18a91b232
async function queryCursor( cursor) {
  const cursor1 = JSON.parse(JSON.stringify(cursor));
  const pageResult = await queryPage( cursor1.params, cursor1.pageItems);

  const result = {
    Items: pageResult.Items,
    Count: pageResult.Count
  };

  if ( cursor.params.ScanIndexForward) {
    if (pageResult.LastEvaluatedKey) {
      result.nextCursor = JSON.parse(JSON.stringify(cursor));
      result.nextCursor.params.ExclusiveStartKey = pageResult.LastEvaluatedKey;
    }
    if ( cursor.params.ExclusiveStartKey) {
      result.prevCursor = JSON.parse(JSON.stringify(cursor));
      result.prevCursor.params.ScanIndexForward = !cursor.params.ScanIndexForward;
      result.prevCursor.params.ExclusiveStartKey.sortId = pageResult.Items[0].sortId;
    }
  } else {
    if (pageResult.LastEvaluatedKey) {
      result.prevCursor = JSON.parse(JSON.stringify(cursor));
      result.prevCursor.params.ExclusiveStartKey = pageResult.LastEvaluatedKey;
    }
    if ( cursor.params.ExclusiveStartKey) {
      result.nextCursor = JSON.parse(JSON.stringify(cursor));
      result.nextCursor.params.ScanIndexForward = !cursor.params.ScanIndexForward;
      result.nextCursor.params.ExclusiveStartKey.sortId = pageResult.Items[0].sortId;
    }
  }

  return result;
}
于 2019-03-12T18:01:43.417 に答える
3

セッション変数、クエリ文字列、または後でアクセスできる同様のものに前のキーの記録を保持し、前に戻りたいときにそのキーを使用してクエリを実行する必要があります。Dynamo はそれを追跡しません。

于 2013-01-18T21:38:46.737 に答える