I'm making a datastore script that is gonna save multiple values later on so that's why I set it up like this.

Code:

local datastore = game:GetService("DataStoreService")
local stat_save = datastore:GetDataStore("Stat_save")

 function OnAdded(player)
	local prefix = "Player_"..player.UserId
	
	local data
	local playerstats = Instance.new("Folder",player)
	local Coins = Instance.new("IntValue",playerstats)
	
	local sucess, err = pcall(function()
		data = stat_save:GetAsync(prefix)
	end)
	if sucess then
		if data then
				Coins.Value = data[1]
		print(data[1])
		print("data found")
		elseif not data then
			print("no data")
	elseif not sucess then
		warn("Error occured: "..err)
	end
	end
end

game.Players.PlayerAdded:Connect(OnAdded)

function OnLeave(player)
	local prefix = "Player_"..player.UserId
	local sucess, err = pcall(function()
	stat_save:SetAsync(prefix, 
		stat_save[1])
	print("saved in datastore: "..stat_save[1])
	end)
end
game.Players.PlayerRemoving:Connect(OnLeave)


local datastore = game:GetService("DataStoreService")
local stat_save = datastore:GetDataStore("Stat_save")

 function OnAdded(player)
	local prefix = "Player_"..player.UserId
	
	local data
	local playerstats = Instance.new("Folder",player)
	local Coins = Instance.new("IntValue",playerstats)
	
	local sucess, err = pcall(function()
		data = stat_save:GetAsync(prefix)
	end)
	if sucess then
		if data then
		Coins.Value = data[1] --getting the first data in the datastore and assigning it
		print(data[1])
		print("data found")
		elseif not data then
			print("no data") --prints this
	elseif not sucess then
		warn("Error occured: "..err)
	end
	end
end

game.Players.PlayerAdded:Connect(OnAdded)

function OnLeave(player)
	local prefix = "Player_"..player.UserId
	local sucess, err = pcall(function()
	stat_save:SetAsync(prefix,  --It should save value here
		stat_save[1])
	print("saved in datastore: "..stat_save[1]) --prints nothing
	end)
end
game.Players.PlayerRemoving:Connect(OnLeave)