Ошибка ключа, даже если ключ существует - Flask socket.io - PullRequest
0 голосов
/ 13 июня 2019

Я пишу код клиента и сервера для приложения чата. Когда я выполняю передачу с клиента и отправляю некоторые данные на сервер в формате json, сервер выдает ошибку ключа, даже если ключ в словаре существует. код выглядит следующим образом:

    document.querySelector('#channels').addEventListener('click',function(e){
            if(e.target && e.target.matches('.new-button')){
                document.querySelector('#conversation').innerHTML = "";

                if (e.target.dataset.isPrivate == "yes") {
                    localStorage.setItem('isPrivate', "yes");
                }

                else {
                    localStorage.setItem('isPrivate', "no");
                }


                const buttonName = e.target.innerHTML;
                const isItPrivate = localStorage.getItem('isPrivate');
                const me = localStorage.getItem('userName');

                localStorage.setItem('activeChannel', buttonName);
                const relevantData = {"channel name": buttonName, "isItPrivate": isItPrivate, "me": me};
                socket.emit('channel changed', {"someInfo": relevantData});
                console.log(relevantData);

                }
    });

и код на сервере выглядит следующим образом:

@socketio.on("channel changed")


def loadChannelMessages(data):


privateOption = data["someInfo"]["isItPrivate"]
print(privateOption)

if privateOption == "yes":
    channelToLoad = data["someInfo"]["channel name"]




    for x in messages:
        if x["name"] == channelToLoad:

            messagesToDisplay = x["data"]
            if messagesToDisplay != []:
                print("messages to display are " + str(messagesToDisplay))
                print ("messages are" + str(messages))
                emit("loading messages", messagesToDisplay, broadcast = False)
                break

else:
    firstHalf = data["someInfo"]["channel name"]
    secondHalf = data["someInfo"]["me"]
    for x in privateChat:
        if firsthalf in x["channel"] and secondHalf in x["channel"]:
            messagesToDisplay = x["convo"]
            if messagesToDisplay != []:
                emit("loading messages", messagesToDisplay, room = request.sid)

но когда я запускаю приложение, появляется сообщение об ошибке:

строка 102, в loadChannelMessages privateOption = data ["someInfo"] ["isItPrivate"] KeyError: 'someInfo'

почему это происходит?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...