Cannot set table object to another object

Hello, so I have this script on the server:

	if ItemValues[newitemsave] then
		local newitem = newitemsave --just to make it easy for the sake of this post, I use random values as items
		local TableDataStore2 = DataStore2("Table2", player)
		local tablev = TableDataStore2:GetTable(Defaults2) --again if there is no table to be found, the default table will be used.
		table.insert(tablev, newitem) --the new item gets inserted in the table.
		TableDataStore2:Set(tablev)  --the datastore will be updated which launches the :OnUpdate function
	print("Done")
		local newitem = game.ServerStorage.Folders.Assets.Items:FindFirstChild(newitem):Clone()
		newitem.Parent = ServerStorage.Folders.PlayerInformation:WaitForChild(player.Name).Inventory.BackpackItems
		game.ReplicatedStorage.Remotes.UpdateBackpack:FireClient(player,game.ServerStorage.Folders.PlayerInformation:WaitForChild(player.Name).Inventory.BackpackItems:GetChildren())

	end

And this script on the client:

local Slots = {
	[1] = nil, 
	[2] = nil, 
	[3] = nil,
	[4] = nil, 
	[5] = nil, 
	[6] = nil, 
	[7] = nil, 
	[8] = nil, 
	[9] = nil, 
	[0] = nil
}

game.ReplicatedStorage.Remotes.UpdateBackpack.OnClientEvent:Connect(function(Items)
	print("Done2")
		for i,v in pairs(Items) do
		print(v.Name)
		if Slots[i] == nil then
				local e2 = v:Clone()
				e2.Parent = script.Parent.ValueHolder
				Slots[i] = e2
				print(Slots[i])
			end
		end
	print("Done3")

end)

And for some reason, the client doesn’t work…
It prints Done2 and Done3 but it doesn’t print v.Name and Slots[i]

I’m trying to achieve a system that’s checking if there’s an empty slot (a slot that is set to nil) going from the lowest to highest slot in order.

If the slot is equal to nil, set the slot to that new object clone and set the new object’s clone parent to the ValueHolder folder.