参阅数据存储。
概要
方法
检索指定的键版本。
检索在特定时间的关键版本。
- ListKeysAsync(prefix : string,pageSize : number,cursor : string,excludeDeleted : boolean):DataStoreKeyPages
返回一个 DataStoreKeyPages 对象来枚举数据存储商店的键。
- ListVersionsAsync(key : string,sortDirection : Enum.SortDirection,minDate : number,maxDate : number,pageSize : number):DataStoreVersionPages
列出钥键的所有版本。
永久删除指定版本的钥键。
返回指定数据存储中的键值和 DataStoreKeyInfo 实例。
- IncrementAsync(key : string,delta : number,userIds : Array,options : DataStoreIncrementOptions):Variant
将钥匙的值增加所提供的数量(两者都必须是整数)。
移除指定的键,同时保留可访问的版本。
设置数据存储的值为给定的键。
使用指定的回调函数的新值更新钥键的值。
属性
方法
GetVersionAsync
此函数检索指定的键版本以及一个 DataStoreKeyInfo 实例。版本标识可以通过 DataStore:ListVersionsAsync() 找到,或者可以是由 GlobalDataStore:SetAsync() 返回的标识。
参数
版本信息被请求的关键名称。如果 DataStoreOptions.AllScopes 通过 DataStoreService:GetDataStore() 访问数据存储时设置为真实,此键名必须与原始范围一样,即"scope/key"。
版本号为要求版本信息的钥匙。
返回
指定版本的键值和包含版本号、日期和时间的 DataStoreKeyInfo 实例,以及用于检索 UserIds 和元数据的函数。
GetVersionAtTimeAsync
此函数会检索在指定时间的关键版本以及一个 DataStoreKeyInfo 实例。
参数
版本信息被请求的关键名称。如果 DataStoreOptions.AllScopes 通过 DataStoreService:GetDataStore() 访问数据存储时设置为真实,此键名必须与原始范围一样,即"scope/key"。
以秒为单位的 Unix 时戳,该请求的版本为当前。必须大于零。不得超过十分钟的未来。
返回
指定时间的键值和包含版本号、日期和时间的 DataStoreKeyInfo 实例,以及用于检索版本 UserIds 和元数据的函数。nil
代码示例
The following code sample retrieves data store key versions using timestamps.
local DataStoreService = game:GetService("DataStoreService")
local dataStore = DataStoreService:GetDataStore("DataStore")
local key = "key-123"
function setData(data)
local success, result = pcall(function()
dataStore:SetAsync(key, data)
end)
if not success then
warn(result)
end
end
function getVersionAtTime(timestamp)
local success, result, keyInfo = pcall(function()
return dataStore:GetVersionAtTimeAsync(key, timestamp.UnixTimestampMillis)
end)
if success then
if result == nil then
print("No version found at time")
else
print(result, keyInfo.Version)
end
else
warn(result)
end
end
-- Previously ran at 2024/12/02 6:00 UTC
setData("version 1")
-- Previously ran at 2024/12/02 9:00 UTC
setData("version 2")
-- Prints "No version found at time"
local time1 = DateTime.fromUniversalTime(2024, 12, 02, 05, 00)
getVersionAtTime(time1)
-- Prints "version 1 <version>"
local time2 = DateTime.fromUniversalTime(2024, 12, 02, 07, 00)
getVersionAtTime(time2)
-- Prints "version 2 <version>"
local time3 = DateTime.fromUniversalTime(2024, 12, 02, 10, 00)
getVersionAtTime(time3)
ListKeysAsync
该函数返回一个 DataStoreKeyPages 对象,用于通过数据存储商店的键进行枚列。它接受可选的 prefix 参数,仅找到那些名称以提供的前缀开始的键。
如果 DataStoreOptions.AllScopes 设置为真时访问数据存储库通过 DataStoreService:GetDataStore() ,钥匙将用所有范围作为前缀返回。
参数
(可选) 键位置的前缀用于找到键。
(可选) 每个页面返回的物品数量。如果没有提供值,引擎将向数据存储服务发送默认值 0,该服务默认为每页 50 项。
(可选) 鼠标继续迭代。
(可选) 将删除的键从返回中排除。
启用 ListKeys 时,将检查最多 512 个键。如果所有检查的键都被删除,则将返回一个空列表以继续迭代。
返回
一个 DataStoreKeyPages 枚列键为 DataStoreKey 实例的实例。
ListVersionsAsync
这个函数列出指定键的版本,以上升或下降顺序指定的 Enum.SortDirection 参数所指定的顺序。它可选地过滤返回的版本以最小和最大时间戳。
参数
列出版本的关键名称。如果 DataStoreOptions.AllScopes 通过 DataStoreService:GetDataStore() 访问数据存储时设置为真实,此键名必须与原始范围一样,即"scope/key"。
(可选) 枚列指定上升或下降排序顺序。
(可选) Unix 时戳在毫秒后,版本应列出。
(可选) Unix 时戳在毫秒内,版本应列出到哪一刻。
(可选) 每个页面返回的物品数量。如果没有提供值,引擎将向数据存储服务发送默认值 0,该服务默认为每页 1024 项。
返回
一个 DataStoreVersionPages 列出所有版本的钥匙为 DataStoreObjectVersionInfo 实例的实例。
代码示例
The following code sample retrieves all versions after a specified starting time, sorted in ascending order.
local DataStoreService = game:GetService("DataStoreService")
local experienceStore = DataStoreService:GetDataStore("PlayerExperience")
local time = DateTime.fromUniversalTime(2020, 10, 09, 01, 42)
local listSuccess, pages = pcall(function()
return experienceStore:ListVersionsAsync("User_1234", nil, time.UnixTimestampMillis)
end)
if listSuccess then
local items = pages:GetCurrentPage()
for key, info in pairs(items) do
print("Key:", key, "; Version:", info.Version, "; Created:", info.CreatedTime, "; Deleted:", info.IsDeleted)
end
end
RemoveVersionAsync
该函数永久删除指定版本的键匙。版本标识可通过 DataStore:ListVersionsAsync() 找到。
与 GlobalDataStore:RemoveAsync() 不同,此函数不会创建新的“墓碑”版本,删除的值无法在稍后恢复。
参数
版本要删除的关键名称。如果 DataStoreOptions.AllScopes 通过 DataStoreService:GetDataStore() 访问数据存储时设置为真实,此键名必须与原始范围一样,即"scope/key"。
要删移除的钥匙版本号。