> For the complete documentation index, see [llms.txt](https://docs.overdare.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.overdare.com/korean/development/api-reference/classes/datastorepages.md).

# DataStorePages

DataStorePages : `Pages`

## Overview

OrderedDataStore에 저장된 항목을 정렬된 순서대로 페이지 단위로 순회할 수 있는 Pages 객체입니다.

OrderedDataStore:GetSortedAsync() 메서드를 통해서만 가져올 수 있으며, Instance.new()로 생성할 수 없습니다. 서버 환경에서만 사용할 수 있습니다.

GetCurrentPage()를 호출하면 현재 페이지의 항목을 배열 형태로 가져올 수 있으며, 각 항목은 다음 필드를 가진 테이블입니다.

* **key** : 항목의 키입니다. 숫자로 저장했더라도 항상 string으로 반환되므로, 필요하면 tonumber()로 변환해 사용합니다.
* **value** : 항목에 저장된 정수 값입니다.

조건에 맞는 항목이 없으면 GetCurrentPage()는 nil이 아닌 빈 테이블을 반환하며, 이때 IsFinished는 true입니다.

IsFinished가 false이면 AdvanceToNextPageAsync()로 다음 페이지를 불러올 수 있으며, 현재 페이지가 마지막 페이지가 되면 IsFinished가 true로 바뀝니다.

**주의사항**

* 마지막 페이지에서 AdvanceToNextPageAsync()를 호출하면 오류가 발생합니다. 이때 현재 페이지와 IsFinished는 바뀌지 않습니다.
* 같은 DataStorePages에서 AdvanceToNextPageAsync()가 진행 중일 때 다시 호출하면, 나중에 호출한 쪽이 즉시 실패하고 현재 페이지는 바뀌지 않습니다. 앞선 호출이 성공, 실패, 시간 초과 중 어떤 방식으로든 끝나면 다시 호출할 수 있습니다.
* 서로 다른 DataStorePages 객체는 동시에 페이지를 넘겨도 서로 영향을 주지 않습니다.
* AdvanceToNextPageAsync()는 GetSortedAsync와 같은 요청 한도를 사용하므로, 한도를 넘으면 즉시 실패할 수 있습니다. pcall로 감싸 호출하는 것이 좋습니다.
* 페이지를 넘기는 동안 저장소의 항목이 추가되거나 삭제되면 그 변경이 다음 페이지에 반영되어, 같은 항목이 두 번 나오거나 누락될 수 있습니다.

## Properties

## Methods

## Events

## See also

{% content-ref url="/pages/wlnRhbIi5omMOWKCEszh" %}
[OrderedDataStore](/korean/development/api-reference/classes/ordereddatastore.md)
{% endcontent-ref %}

{% content-ref url="/pages/LBBPet4iHQBSYAPFmfBF" %}
[커스텀 리더보드](/korean/manual/script-manual/advanced-gameplay-systems/ordereddatastore.md)
{% endcontent-ref %}
