Я пишу код клиента и сервера для приложения чата. Когда я выполняю передачу с клиента и отправляю некоторые данные на сервер в формате 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'
почему это происходит?