Node.js Socket.io с Redis – Как изменить только определенный ключ в объекте?Javascript

Форум по Javascript
Гость
Node.js Socket.io с Redis – Как изменить только определенный ключ в объекте?

Сообщение Гость »


Клиенты могут создавать лобби, которые сохраняются в Redis в формате объекта { . Затем клиенты присоединяются к лобби или покидают его, что потребует обновления только определенных ключей внутри объекта лобби.

В частности, здесь, когда клиент отключается, если он находится в лобби, сервер регистрирует информацию, get весь LOBBY_LIST, обновляя небольшая часть delete json[user.currentLobby].users[socket.id], затем set сохраняет весь LOBBY_LIST обратно в базу данных. Это кажется небрежным и неправильным и уже доставляет мне проблемы.

Как правильно реализовать такую ​​функцию?

socket.on( 'disconnect', async ( ) => { пытаться { console.log(`\x1b[33m[Worker${process.pid}]\x1b[0m ${user.id} отключен` ); if(!user.currentLobby) return; const LOBBY_LIST = ждут storeClient.get('LOBBY_LIST'); вар json = JSON.parse(LOBBY_LIST); если (json[user.currentLobby] == null) return; удалить json[user.currentLobby].users[socket.id]; if( Object.keys( json[user.currentLobby].users).length == 0) delete json[user.currentLobby]; storeClient.set('LOBBY_LIST', JSON.stringify(json)); сокет.emit('serverJoinLobby', 'успех'); } поймать( е ) { console.log(е); } }); Объект каждого лобби
const лобби = { имя: данные.имя, карта: данные.карта, тип: data.type, userMax: данные.userMax, пользователи: { }, // содержит сокет клиента комнаты.id хост: сокет.id };

Вернуться в «Javascript»