OrderedDataStore is returning nil values even know they are being updated

  1. What do you want to achieve? I am looking to fix this problem I am having with my OrderedDataStore

  2. What is the issue? I am trying to create a leaderboard by using an OrderedDataStore. I write to it using UpdateAsync() and inside that function I confirm that the value are infact being updated. The problem is when I try to read from the DataStore it says the key and value are both nil.

  3. What solutions have you tried so far? Ive done a lot of print debugging and I cant figure out the problem.

local TreasuresFoundLeaderboardDataStore = DataStoreService:GetOrderedDataStore("TestingLeaderboardDataStore", "TreasuresFound")

-- This is the portion that reads from the data store.
		local DataStorePages = TreasuresFoundLeaderboardDataStore:GetSortedAsync(false, 9, 1, math.huge)
		local CurrentPage = DataStorePages:GetCurrentPage()
		
		if #CurrentPage > 0 then
			for Index, Object in pairs(CurrentPage) do
				print(Object.Key, Object.Value) -- It prints nil,nil
			end
		else
		end

-- This is the portion that writes to the data store.
		local Success, ReturnedArgument = pcall(function()
			TreasuresFoundLeaderboardDataStore:UpdateAsync(Player.UserId, function(OldValue)
				local NewValue
				if OldValue == nil then
					NewValue = 0
				else
					NewValue = OldValue
				end
						
				NewValue = NewValue + 1
				print(NewValue, OldValue) -- This prints the correct information, so I assume it is correctly updating.
				return NewValue
			end)
		end)

print(Success, ReturnedArgument) -- This prints True, nil so it isnt throwing an error.

Thanks and hopefully someone can help me out! Have a good one!

You aren’t actually returning anything from inside of the pcall function. Return the UpdateAsync function from inside the pcall and it will give back a tuple containing the key and value from which you updated.

After checking the api-reference, I found that the properties are named ‘key’ and ‘value’ - capitalisation matters.

2 Likes