Data not saving?

It doesn’t error, I have tried using http service but to no avail. here is my code.

local datastore = game:GetService("DataStoreService")
local PlayerData = {}
local MainDataStore = datastore:GetDataStore"Main"
local http = game:GetService("HttpService")
game.Players.PlayerRemoving:Connect(function(player)
	local data = PlayerData[player]
	local itemcf = {}
	local itemna = {}
	local invit = {}
	local invam = {}
	local base = player.Base.Value
	for _,v in pairs(base.ItemHolder:GetChildren()) do
		local objectCFrame = base.Base.CFrame:toObjectSpace(v.PrimaryPart.CFrame)
		table.insert(itemcf, encodeCFrame(objectCFrame))
		table.insert(itemna, v.Name)
	end
	data.Data.ItemStoreCF = http:JSONEncode(itemcf)
	data.Data.ItemStoreNa = http:JSONEncode(itemna)
	data.Data.Cash = player.RealCash.Value
	for _,o in pairs(base.Ores:GetChildren()) do
		o:Destroy()
	end
	for _,i in pairs(base.ItemHolder:GetChildren()) do
		i:Destroy()
	end
	base.Owner.Value = nil
	if data and not data.Error then
		PlayerData[player] = nil
		local maindata = data.Data
		if maindata then
			pcall(MainDataStore.SetAsync,MainDataStore,player.UserId,maindata)
		end
	end
end)

game.Players.PlayerAdded:Connect(function(plr)
	local localdata = {}
	local success2,data = pcall(MainDataStore.GetAsync,MainDataStore,plr.UserId)
	if success2 then
		if not data then
			localdata.Updated = true
		end
		data = data or {}
		localdata.Data = data
	else
		localdata.Error = true
	end
	PlayerData[plr] = localdata
	PlayerData[plr].Updated = true
end)