gpt4 book ai didi

javascript - Node js 和 Redis 未定义的 JSON 属性

转载 作者:IT王子 更新时间:2023-10-29 06:11:06 26 4
gpt4 key购买 nike

当我尝试从 Redis 函数获取 JSON 属性时,我得到了未定义。

当我使用这个控制台输出应该是什么:

redisClient.on("message", function(channel, data) {
console.log("new message add in queue "+ data + " channel");
socket.emit(channel, data);
});

控制台:

new message add in queue {"message":"A new message!","user":"John Doe"} channel

当我尝试从数据中获取属性时,我得到了未定义的信息:

redisClient.on("message", function(channel, data) {

console.log("new message add in queue "+ data['message'] + " channel");
socket.emit(channel, data);
});

new message add in queue undefined channel

我也试过这样获取数据属性,但没有成功

data.message

这很奇怪,因为在我的客户端脚本中我可以使用 data.message 并且它工作得很好。

最佳答案

你得到的数据对象是一个字符串,而不是一个对象。要获取消息,您应该执行 JSON.parse(data).message

通过查看redisClient 的源代码,您可以注意到publish 方法和on('message') 事件使用的是字符串参数。使用 JSON.parse 时,建议将其包装在 try/catch block 中。该字符串可能无效,并会抛出错误。

redisClient.on("message", function(channel, data) {
try{
data=JSON.parse(data)
}
catch(e){
return console.log('data is not an JSON string',data)
}
console.log("new message add in queue "+ data['message'] + " channel");
socket.emit(channel, data);
})

更多信息:

关于javascript - Node js 和 Redis 未定义的 JSON 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41820233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com