Node.js 在解析socket.io对象时,如何使[object]可读

Node.js 在解析socket.io对象时,如何使[object]可读,node.js,socket.io,Node.js,Socket.io,我想在socket.io中查看我的房间列表 但是控制台只返回[object] 我的密码是这个 io.on('connection', function (socket) { var rooms = io.sockets.adapter.rooms; console.log('rooms: '+rooms); } 我的控制台日志是 rooms: [object Object] 这有点奇怪 我写代码 for (var key in rooms){ console.log('k

我想在socket.io中查看我的房间列表

但是控制台只返回[object]

我的密码是这个

io.on('connection', function (socket) {
   var rooms = io.sockets.adapter.rooms;
   console.log('rooms: '+rooms);
}
我的控制台日志是

rooms: [object Object]
这有点奇怪

我写代码

for (var key in rooms){
    console.log('key: '+key);
}
然后,控制台写入所连接客户端的socket.id

比如

key: iFUdbwRtB5oRMcf3AAAA
从此改变

console.log('rooms: '+rooms);
为此:

console.log('rooms: ', rooms);
在字符串操作中使用对象会导致调用
.toString()
,对象的默认字符串转换为
[object object]
。使用console.log()直接输出对象将显示对象的实际内容,而不仅仅是尝试一般的字符串转换。

对此进行更改

console.log('rooms: '+rooms);
为此:

console.log('rooms: ', rooms);

在字符串操作中使用对象会导致调用
.toString()
,对象的默认字符串转换为
[object object]
。使用console.log()直接输出对象将显示对象的实际内容,而不仅仅是尝试一般的字符串转换。

您可以简单地字符串化房间:

console.log('rooms: ', JSON.stringify(rooms, null, 10));

您可以简单地将房间串起来:

console.log('rooms: ', JSON.stringify(rooms, null, 10));

尝试像JSON.parse(JSON.stringify(key))那样解析您的键对象;尝试像JSON.parse(JSON.stringify(key))那样解析您的键对象<当存在循环引用时,code>JSON.stringify()不起作用,我认为
io.sockets.adapter.rooms
中可能存在循环引用。另外,如果您只是让
console.log()
为您输出对象,那么您可以更轻松地在控制台窗口中导航和查看结果(因为您可以展开和折叠复杂的对象)。
JSON.stringify()当存在循环引用时,
不起作用,我认为在
io.sockets.adapter.rooms
内部可能存在循环引用。另外,如果让
console.log()
为您输出对象,那么您可以更轻松地在控制台窗口中导航和查看结果(因为您可以展开和折叠复杂的对象)。这是一个很好的观点。帮助我不用花几个小时追踪行为。这是一个很好的观点。帮助我不用花几个小时来追踪行为。