Game doesn't save any data, DataStore sends no errors

Hello, I am making a skin system that saves your skins & equipped skins, however, whenever I rejoin, the game doesn’t load my data, yet the console yields no errors both in game & in studio. Any clue as to why this does not work?

PlayerService.PlayerAdded:Connect(function(Player) -- Load Data
	local Data = Instance.new("Folder")
	Data.Parent = Player
	Data.Name = "Data"
	local JuggernautsFolder = Instance.new("Folder")
	JuggernautsFolder.Parent = Data
	JuggernautsFolder.Name = "Juggernauts"
	local PlayerSkins = Instance.new("Folder")
	PlayerSkins.Parent = Data
	PlayerSkins.Name = "PlayerSkins"
	local EquippedGun = Instance.new("StringValue")
	EquippedGun.Name = "EquippedGun"
	EquippedGun.Parent = Data
	local EquippedKnife = Instance.new("StringValue")
	EquippedKnife.Name = "EquippedKnife"
	EquippedKnife.Parent = Data
	local EquippedJuggernaut = Instance.new("StringValue")
	EquippedJuggernaut.Name = "EquippedJuggernaut"
	EquippedJuggernaut.Parent = Data
	local Coins = Instance.new("NumberValue")
	Coins.Name = "Coins"
	Coins.Parent = Data
	local CurrentXP = Instance.new("NumberValue")
	CurrentXP.Name = "CurrentXP"
	CurrentXP.Parent = Data
	local TotalXP = Instance.new("NumberValue")
	TotalXP.Name = "TotalXP"
	TotalXP.Parent = Data
	local ReqXP = Instance.new("NumberValue")
	ReqXP.Name = "ReqXP"
	ReqXP.Parent = Data
	local Level = Instance.new("NumberValue")
	Level.Name = "Level"
	Level.Parent = Data
	local MVPStatus = Instance.new("NumberValue")
	MVPStatus.Name = "MVPStatus"
	MVPStatus.Parent = Data
	local PlayerData = nil
	pcall(function()
		PlayerData = JuggernautDatastore:GetAsync(Player.UserId.."-PlayerData")
	end)
	if PlayerData == nil then
		ReqXP.Value = 100
		local DefaultGunSkin = Skins:FindFirstChild("Default Gun"):Clone()
		local DefaultKnifeSkin = Skins:FindFirstChild("Default Knife"):Clone()
		local Barrelnaut = Juggernauts:FindFirstChild("Barrelnaut"):Clone()
		DefaultGunSkin.Parent = PlayerSkins
		DefaultKnifeSkin.Parent = PlayerSkins
		Barrelnaut.Parent = JuggernautsFolder
		EquippedGun.Value = "Default Gun"
		EquippedKnife.Value = "Default Knife"
		EquippedJuggernaut.Value = "Barrelnaut"
		if AlphaKnifeObtainability == true then
			if not PlayerSkins:FindFirstChild("Alpha Knife") then
				BadgeService:AwardBadge(Player.UserId,AlphaKnifeBadgeID)
				local AlphaKnife = Skins:FindFirstChild("Alpha Knife"):Clone()
				AlphaKnife.Parent = PlayerSkins
			end
		end
	else
		Coins.Value = PlayerData[1]
		Level.Value = PlayerData[2]
		CurrentXP.Value = PlayerData[3]
		TotalXP.Value = PlayerData[4]
		ReqXP.Value = PlayerData[5]
		EquippedGun.Value = tostring(PlayerData[6])
		EquippedKnife.Value = tostring(PlayerData[7])
		EquippedJuggernaut.Value = tostring(PlayerData[8])
		local SkinsData = PlayerData[9]
		local JuggernautData = PlayerData[10]
		for _,Skin in pairs(SkinsData) do
			if Skins:FindFirstChild(Skin) then
				local CurrentSkin = Skins:FindFirstChild(Skin):Clone()
				CurrentSkin.Parent = PlayerSkins
			else
				warn("Cannot find skin, removing from inventory.")
			end
		end
		for _,Juggernaut in pairs(JuggernautData) do
			if Juggernauts:FindFirstChild(Juggernaut) then
				local CurrentJuggernaut = Juggernauts:FindFirstChild(Juggernaut):Clone()
				CurrentJuggernaut.Parent = JuggernautsFolder
			end
		end
	end
    while wait() do
       if CurrentXP.Value >= ReqXP.Value then
       if Level.Value < 100 then
		  CurrentXP.Value = CurrentXP.Value-ReqXP.Value
		  ReqXP.Value = ReqXP.Value+200
		  Level.Value = Level.Value+1
	   end
	end
    end
end)

game.Players.PlayerRemoving:Connect(function(Player) -- Save Data
	local Data = Player:WaitForChild("Data")
	local JuggernautsFolder = Data:WaitForChild("Juggernauts")
	local PlayerSkins = Data:WaitForChild("PlayerSkins")
	local EquippedGun = Data:WaitForChild("EquippedGun")
	local EquippedKnife = Data:WaitForChild("EquippedKnife")
	local EquippedJuggernaut = Data:WaitForChild("EquippedJuggernaut")
	local Coins = Data:WaitForChild("Coins")
	local Level = Data:WaitForChild("Level")
	local TotalXP = Data:WaitForChild("TotalXP")
	local ReqXP = Data:WaitForChild("ReqXP")
	local CurrentXP = Data:WaitForChild("CurrentXP")
	local SkinsTable = {}
	local JuggernautTable = {}
	if #PlayerSkins:GetChildren() > 0 then
		for I,Skin in pairs(PlayerSkins:GetChildren()) do
			table.insert(SkinsTable,I,Skin.Name)
		end
	end
	if #JuggernautsFolder:GetChildren() > 0 then
		for I,Juggernaut in pairs(JuggernautsFolder:GetChildren()) do
			table.insert(JuggernautTable,I,Juggernaut)
		end
	end
	local PlayerData = {Coins.Value,Level.Value,CurrentXP.Value,TotalXP.Value,ReqXP.Value,tostring(EquippedGun.Value),tostring(EquippedKnife.Value),tostring(EquippedJuggernaut.Value),SkinsTable,JuggernautTable}
	JuggernautDatastore:SetAsync(Player.UserId.."-PlayerData",PlayerData)
end)

Add a bind to close function, since the server might be shutting down faster than the data can save.

I tried it and that did not work.

Did you enable Studio Access to API Services?

Studio Access is enabled, yes. As I said, it doesn’t save in game & in studio.