Skip to content

OrderedDataStore ​

有序数据存储集合,用于存储键值对并支持按值排序检索。它继承自 DataStore,额外提供 GetSortedAsync 方法,可按升序或降序分页获取数据。写入的值必须是整数,适合排行榜、分数记录等需要排序的场景。

概览 ​

有序数据存储集合,用于存储键值对并支持按值排序检索。它继承自 DataStore,额外提供 GetSortedAsync 方法,可按升序或降序分页获取数据。写入的值必须是整数,适合排行榜、分数记录等需要排序的场景。

继承自 DataStore;不可实例化,由接口返回

函数 ​

GetSortedAsync ​

签名:GetSortedAsync(ascending: Bool, pageSize: Int?, minValue: Int?, maxValue: Int?, options: DataStoreGetOptions?) -> OrderedDataStoreKeyValueInfoPages

获取有序数据存储中按 value 排序的分页数据。返回一个分页迭代器,可遍历排序后的键值对。

参数类型说明
ascendingBool是否升序
pageSizeInt?页大小, 默认 0 (使用服务端默认值)
minValueInt?最小值过滤, 包含
maxValueInt?最大值过滤, 包含
optionsDataStoreGetOptions?可选参数, 优先级高于 OrderedDataStore 初始化时的 DataStoreOptions, 可通过 DataStoreGetOptions.New() 创建

返回值 OrderedDataStoreKeyValueInfoPages

按 value 降序读取分页

lua
-- @runtime server
local DataStoreService = game:GetService('DataStoreService')
local Task = game:GetService('Task')
local orderedStore = DataStoreService:GetOrderedDataStore('PlayerScore')

Task:Spawn(function()
    local options = DataStoreGetOptions.New()
    local pages = orderedStore:GetSortedAsync(false, 10, nil, nil, options)
    for _, item in ipairs(pages:GetCurrentPage()) do
        print(item.Key, item.Value)
    end
end)