Ошибка при чтении свойства socket.request.session.passport.user не может прочитать свойство undefined - PullRequest
0 голосов
/ 07 июня 2019

Я создаю приложение, которое создает чат.Получая список активных пользователей, я написал вспомогательный код для добавления пользователя с активным текущим сеансом в массив комнат. Мой файл helpers.js имеет следующую функцию: helpers.js

let addUserToRoom = (allrooms, data, socket) => {
    let getRoom = findRoomById(allrooms, data.roomID);
    if (getRoom !== undefined) {
        let userID = socket.request.session.passport.user;

        let checkUser = getRoom.users.findIndex((element, index, array) => {
            if(element.userID === userID) {
                return true;
            } else {
                return false;
            }
        });

        if (checkUser > -1) {
            getRoom.users.splice(checkUser, 1);
        }

        getRoom.users.push({
            socketID: socket.id,
            userID,
            user: data.user,
            userPic: data.userPic
        });

        socket.join(data.roomID);
        return getRoom;
    }
}

Этот код выше обнаруживаетнаходится ли пользователь уже в комнате.если да, то удалите этого пользователя и перечитайте его в присоединенный список пользователей.но при тестировании этого кода я получаю следующую ошибку:

/home/shacker/Programs20182/aanjs/chatcat/app/helpers/index.js:102
        let userID = socket.request.session.passport.user;
                                                     ^

TypeError: Cannot read property 'user' of undefined
    at Object.addUserToRoom (/home/shacker/Programs20182/aanjs/chatcat/app/helpers/index.js:102:54)
    at Socket.socket.on.data (/home/shacker/Programs20182/aanjs/chatcat/app/socket/index.js:29:30)
    at Socket.emit (events.js:189:13)
    at /home/shacker/Programs20182/aanjs/chatcat/node_modules/socket.io/lib/socket.js:528:12
    at process._tickCallback (internal/process/next_tick.js:61:11)

Есть ли другой способ получить переменную userID из сеанса или помочь мне устранить эту ошибку ...

...