首页 文章

节点中的javascript对象值

提问于
浏览
-3

nodejs 的控制台日志中 . 尝试读取对象中的对象但结果不正确 . 这就是我想要做的事情:请耐心等待我阅读 . 不确定如何正确格式化 .

我跑了这个我得到以下结果 .

console.log(Object.values(room));


[ 'helloRoom',
  'b19b29e4-c61f-4425-927e-4290a3e8b309mw',
  { 'b19b29e4-c61f-4425-927e-4290a3e8b309mw': 
     WebSocket {
       domain: null,
       _events: [Object],
       _eventsCount: 2,
       _maxListeners: undefined,
       readyState: 1,
       bytesReceived: 0,
       extensions: {},
       protocol: 'echo-protocol',
       _binaryType: 'nodebuffer',
       _finalize: [Function],
       _finalizeCalled: false,
       _closeMessage: null,
       _closeTimer: null,
       _closeCode: null,
       _receiver: [Receiver],
       _sender: [Sender],
       _socket: [Socket],
       _ultron: [Ultron],
       protocolVersion: 13,
       _maxPayload: 104857600,
       _isServer: true,
       id: 'b19b29e4-c61f-4425-927e-4290a3e8b309mw',
       room: 'b19b29e4-c61f-4425-927e-4290a3e8b309mw',
       is_host: true } },
  [ 'b19b29e4-c61f-4425-927e-4290a3e8b309mw' ],
  'b19b29e4-c61f-4425-927e-4290a3e8b309mw' ]

然后我跑了这个:

for(var s in room){
        console.log(s);
       }

我得到以下结果:

name
id
sockets
users
host

这样做:

console.log(room.id);

我得到以下内容:

a5c6ac55-89a3-4f06-aace-81179674fdedmw

这样做:console.log(Object.values(room.sockets));我明白了:

[ WebSocket {
    domain: null,
    _events: { close: [Function], message: [Function: incoming] },
    _eventsCount: 2,
    _maxListeners: undefined,
    readyState: 1,
    bytesReceived: 0,
    extensions: {},
    protocol: 'echo-protocol',
    _binaryType: 'nodebuffer',
    _finalize: { [Function: bound finalize] __ultron: 1 },
    _finalizeCalled: false,
    _closeMessage: null,
    _closeTimer: null,
    _closeCode: null,
    _receiver: 
     Receiver {
       _binaryType: 'nodebuffer',
       _extensions: {},
       _maxPayload: 104857600,
       _bufferedBytes: 0,
       _buffers: [],
       _compressed: false,
       _payloadLength: 0,
       _fragmented: 0,
       _masked: false,
       _fin: false,
       _mask: null,
       _opcode: 0,
       _totalPayloadLength: 0,
       _messageLength: 0,
       _fragments: [],
       _cleanupCallback: null,
       _hadError: false,
       _dead: false,
       _loop: false,
       onmessage: [Function],
       onclose: [Function],
       onerror: [Function],
       onping: [Function],
       onpong: [Function],
       _state: 0 },
    _sender: 
     Sender {
       _extensions: {},
       _socket: [Socket],
       _firstFragment: true,
       _compress: false,
       _bufferedBytes: 0,
       _deflating: false,
       _queue: [] },
    _socket: 
     Socket {
       connecting: false,
       _hadError: false,
       _handle: [TCP],
       _parent: null,
       _host: null,
       _readableState: [ReadableState],
       readable: true,
       domain: null,
       _events: [Object],
       _eventsCount: 7,
       _maxListeners: undefined,
       _writableState: [WritableState],
       writable: true,
       allowHalfOpen: false,
       _bytesDispatched: 168,
       _sockname: null,
       _pendingData: null,
       _pendingEncoding: '',
       server: [Server],
       _server: [Server],
       _idleTimeout: -1,
       _idleNext: null,
       _idlePrev: null,
       _idleStart: 4337,
       _destroyed: false,
       parser: null,
       on: [Function],
       _paused: false,
       read: [Function],
       _consuming: true,
       [Symbol(asyncId)]: 11,
       [Symbol(bytesRead)]: 0,
       [Symbol(asyncId)]: 13,
       [Symbol(triggerAsyncId)]: 8 },
    _ultron: Ultron { id: 1, ee: [Socket] },
    protocolVersion: 13,
    _maxPayload: 104857600,
    _isServer: true,
    **id: 'a5c6ac55-89a3-4f06-aace-81179674fdedmw',**
    room: 'a5c6ac55-89a3-4f06-aace-81179674fdedmw',
    is_host: true } ]

我想要的是 room.socket.id

我试过了:

console.log(room.sockets.id);

我明白了:

undefined

我试过了:

console.log(Object.values(room.sockets.id));

我明白了:

TypeError: Cannot convert undefined or null to object

我怎么能自己得到 room.sockets.id

[更新] Sutarmin Anton的评论有效 .

“... room.sockets实际上是一个对象 . 使用

Object.keys(room.sockets)

哪个应该从room.sockets对象的键获取id并返回它们的数组 . 或者,如果你坚持从每个套接字的id属性获取id,那么

Object.values(room.sockets).map(socket => socket.id)“

1 回答

  • 0

    你需要 Object.keys(room.sockets) ,它应该从 room.sockets 对象的键中获取id并返回它们的数组 . 或者,如果您坚持从每个套接字的 id 属性获取id,请执行 Object.values(room.sockets).map(socket => socket.id)

相关问题