一个 GlobalDataStore 会暴露保存和加载数据的功能为 DataStoreService 。
请参阅数据存储了解数据结构、管理、错误处理等方面的深度指南。
订购的数据存储不支持版本和数据金属,因此 DataStoreKeyInfo 总是是 nil 对于键在 OrderedDataStore 中。 如果您需要版本和数据金属协助,请使用 1> Class.DataStore1> 。
概要
方法
返回指定的数据存储中的钥匙的值,以及一个 DataStoreKeyInfo 实例。
- IncrementAsync(key : string,delta : number,userIds : Array,options : DataStoreIncrementOptions):Variant
将键的值提高一个指定的数量(两者都必须为整数)。
保留可访问版本,同时移除指定的钥匙。
设置数据存储为指定钥键的值。
更新键的值,从指定的回调函数中获取一个新值。
属性
方法
GetAsync
此函数将提供的钥匙的最新值和一个 DataStoreKeyInfo 实例返回。如果钥匙不存在或最新版本已标记为删除,两个返回值都将为 nil 。
钥匙在第一次已读取后在本地保存 4 秒。在 4 秒内的 GlobalDataStore:GetAsync() 调用返回从缓存中获取值。修改钥匙通过 GlobalDataStore:SetAsync() 或 GlobalDataStore:UpdateAsync() 应用于钥匙,即可立即重新启动 4 秒计时器。
要获取特定版本,例如最新版本之前的版本,请使用 DataStore:GetVersionAsync() 。
参数
值得请求的钥匙名称。如果 DataStoreOptions.AllScopes 设置为 true 使用 DataStoreService:GetDataStore() 访问数据存储时,此钥匙名必须与原始范围一起使用,如果在 "范围/键" 中使用 " scope/key",这个钥匙名必须包含原始范围。
返回
输入的数据存储中的值,包括版本号、创建时间和版本创建时间,以及一个 DataStoreKeyInfo 实例,其中包含版本号、创建时间和版本创建时间。还有一个名为 UserIds 和描述金数据的描述。
IncrementAsync
此函数将钥匙的值提高一个指定的数量(必须为整数)。
OrderedDataStore 不支持版本管理,因此调用此方法在 OrderedDataStore 键上覆盖当前值增加值并使以前版本无法使用。
参数
值值更新的钥匙名称。如果 DataStoreOptions.AllScopes 设置为 true 使用 DataStoreService:GetDataStore() 访问数据存储时,此钥匙名称必须与原始范围一起使用,如果在 "范围/键" 中使用 " scope/key" 。
数量增加当前值。
(可选) DataStoreIncrementOptions 实例,可以结合多个额外参数作为自定义数据标记,并允许未来的扩展。
返回
更新了数据存储中的条目值,带有指定的钥键。
RemoveAsync
此函数将指定的钥匙标记为已删除,创建一个新的“墓碑”版本的钥键。在此之前,它将返回最新版本,以前于删除调用。
当键被移除过此函数, GlobalDataStore:GetAsync() 对键的调用将返回 nil 。更早版本的钥匙仍然可以通过 DataStore:ListVersionsAsync() 和 1> Class.DataStore:GetVersionAsync()1> 来访问,假设它们未过期。
OrderedDataStore 不支持版本管理,所以在 RemoveAsync() 上调用 OrderedDataStore 键将永久删除。
删除的对象将在 30 天后永久删除。
如果以前的值已经通过 GlobalDataStore:RemoveAsync() 或 DataStore:RemoveVersionAsync() 删除,函数将返回 nil , 1> nil1> 值和 4> Class.DataStoreKeyInfo4> respective。
参数
要删除的钥匙名。如果 DataStoreOptions.AllScopes 设置为 true 使用 DataStoreService:GetDataStore() 访问数据存储时,此钥匙名必须与原始范围一起使用,因此在“范围/键”中的“键”/“值”部分。
返回
删除前数据存储的值和一个 DataStoreKeyInfo 实例,包括版本号、日期和时间版本创建,以及恢复UserIds和元数据的功能。
SetAsync
此函数设置最新值,UserIds,并为所指定的键匙添加金属属性。
数据存储中的值是版本化的,这意味着 GlobalDataStore:SetAsync() 每次调用时都会创建一个新版本。 上一版本可以通过 DataStore:ListVersionsAsync() / DataStore:GetVersionAsync() 访问,在 30 天内永久删除。
OrderedDataStore 不支持版本管理,因此在 OrderedDataStore 键上调用此方法将覆盖当前值并使以前版本无法访问。
金数据定义必须总是更新为值,即使没有更改当前值;否则,当前值将会丢失。
任何存储在数据存储中的字符串都必须是有效的 UTF-8 。在 UTF-8 中,大于 127 的值用于仅用于多个字节代码点的编码,因此单个字节大于 127 将无效 UTF-8 和 GlobalDataStore:SetAsync() 尝试将会失败。
设置 vs. 更新
GlobalDataStore:SetAsync() 最适合快速更新特定钥键,并且只会对写入限制进行计算。但是,如果两个服务器尝试同时设置相同的钥匙值,它可能会导致数据不一致。GlobalDataStore:UpdateAsync() 更
参数
值将设置的钥匙名称。如果 DataStoreOptions.AllScopes 设置为 true 使用 DataStoreService:GetDataStore() 访问数据存储时,此钥匙名必须与原始范围一起使用,例如 "范围/键" 中的 "键".
数据商店的钥匙值将设置。
Class.Player.UserId|UserIds 的桌子,强烈建议用于帮助跟踪/移除 GDPR。
(可选) DataStoreSetOptions 实例,允许对键匙上的金属标签进行金属标签指定。
返回
创建新版本的版本识别器。它可以用于使用 GetVersionAsync() 或使用 RemoveVersionAsync() 来恢复钥匙信息。
UpdateAsync
此函数从数据存储中恢复一个钥匙的值和数据,并使用指定的回调函数通过第二个参数确定的新值更新它。如果回调返回 nil,写入操作已取消,值仍然不变。
如果更新成功,新版本的值将被创建,其它版本将通过 DataStore:ListVersionsAsync() 和 DataStore:GetVersionAsync() 剩余。
OrderedDataStore 不支持版本管理,因此在 OrderedDataStore 键上调用此函数将覆盖当前值并使以前版本无法访问。
在其他游戏服务器在获取当前值和设置钥匙值之间的短时间内更新键匙时,GlobalDataStore:UpdateAsync() 将调用函数再次,丢弃上一次调用的结果。函数将被调用多次,直到数据被保存 或 直到调用函数返回nil。这可以用
任何存储在数据存储中的字符串都必须是有效的 UTF-8 。在 UTF-8 中,大于 127 的值用于仅用于多个字节代码点的编码,因此单个字节大于 127 将无效 UTF-8 和 GlobalDataStore:UpdateAsync() 尝试将会失败。
设置 vs. 更新
GlobalDataStore:SetAsync() 最适合快速更新特定钥键,并且只会对写入限制进行计算。但是,如果两个服务器尝试同时设置相同的钥匙值,它可能会导致数据不一致。GlobalDataStore:UpdateAsync() 更
回调函数
回调函数接受两个参数:
- 更新前值的钥匙。
- DataStoreKeyInfo 实例,包含最新版本信息(如果不使用メタ数据,可以忽略此参数)。
在回调函数中,调用函数返回三个值:
- 键的新值。
- Class.Player.UserId|UserIds 与键关联的阵列。DataStoreKeyInfo:GetUserIds() 应该返回,除非现有 ID 被更改,否则所有现有 ID 都将被清除。
- 一个 Lua 表,包含与键匙关联的数据。 DataStoreKeyInfo:GetMetadata() 应该返回,除非现有数据被更改,否则所有现有数据都将被清除。
如果回调返回 nil ,当前服务器将停止尝试更新钥键。
回调函数无法生成,所以不要包含 不 包括 task.wait() 在内的调用。
参数
值值更新的钥匙名称。如果 DataStoreOptions.AllScopes 设置为 true 使用 DataStoreService:GetDataStore() 访问数据存储时,此钥匙名称必须与原始范围一起使用,如果在 "范围/键" 中使用 " scope/key" 。
变形函数,将当前值和 DataStoreKeyInfo 作为参数返回,并且在选项 UserIds 和数据上返回新值。
返回
更新了数据存储中的值,包括版本号、创建时间和版本创建时间,以及一个 DataStoreKeyInfo 实例,该实例包含版本号、日期和时间以及函数以恢复 UserIds 和元数据。