Пн goose выполняет некоторые оптимизации, при которых оно действительно сохраняет поле, только если оно "изменяется". В этом случае вы модифицируете массив, но массив по-прежнему является «тем же» массивом, поскольку в нем все еще ===
(равно) предыдущему массиву. Вам нужно использовать новый массив для замены пространств имен.
Например:
foundUser.namespaces = [
...foundUser.namespaces.slice(0, indexOfNamespaces),
{ ...foundUser.namespaces[indexOfNamespaces], rooms: updatedRooms },
...foundUser.namespaces.slice(indexOfNamespaces + 1)
]
Теперь при сохранении Mon goose увидит «новый» массив, который !==
( не равно) предыдущий массив, потому что это новый экземпляр, и он сохранит его.