protobuf.js:在 node.js 中将 int64 对象打印为字符串
protobuf.js: print int64 Object as string in node.js
我正在使用这个很棒的模块:protobuf.js 用于 node.js 中的协议缓冲区。
我有 int64 字段类型(google-协议支持),我正在尝试将它打印到屏幕上。
行:
console.log(MessageTypeAck.decode(message));
打印以下内容:
{ trace:
[ { topic: 'Genesis', partition: 0, offset: [Object] },
{ topic: 'DataManager', partition: 0, offset: [Object] } ],
sourceModuleName: 'DataManager',
sourceModuleID: 10040 }
(偏移字段打印为 [Object]
)
和行:
console.log(MessageTypeAck.decode(message).trace[1].offset.toString());
打印:
9217
(实际值)。
为什么第一次调用没有调用 Long 对象的 toString()?
为什么期望的输出是:
{ trace:
[ { topic: 'Genesis', partition: 0, offset: 9217 },
{ topic: 'DataManager', partition: 0, offset: 9217 } ],
sourceModuleName: 'DataManager',
sourceModuleID: 10040 }
我找到了这个 issue 但据我所知,我不应该做一些特别的事情来得到它..
我也找到了 this - 我的版本 (npm list protobufjs) return protobufjs@5.0.1
有什么想法吗?
在Node.jsconsole.log
calls util.inspect
under the hood. Which by default has a depth
value of 2.
为了打印对象的所有属性,您可以直接调用util.inspect
:
const util = require('util');
console.log(util.inspect(
MessageTypeAck.decode(message),
{ showHidden: true, depth: null }
));
我正在使用这个很棒的模块:protobuf.js 用于 node.js 中的协议缓冲区。
我有 int64 字段类型(google-协议支持),我正在尝试将它打印到屏幕上。
行:
console.log(MessageTypeAck.decode(message));
打印以下内容:
{ trace:
[ { topic: 'Genesis', partition: 0, offset: [Object] },
{ topic: 'DataManager', partition: 0, offset: [Object] } ],
sourceModuleName: 'DataManager',
sourceModuleID: 10040 }
(偏移字段打印为 [Object]
)
和行:
console.log(MessageTypeAck.decode(message).trace[1].offset.toString());
打印:
9217
(实际值)。 为什么第一次调用没有调用 Long 对象的 toString()?
为什么期望的输出是:
{ trace:
[ { topic: 'Genesis', partition: 0, offset: 9217 },
{ topic: 'DataManager', partition: 0, offset: 9217 } ],
sourceModuleName: 'DataManager',
sourceModuleID: 10040 }
我找到了这个 issue 但据我所知,我不应该做一些特别的事情来得到它..
我也找到了 this - 我的版本 (npm list protobufjs) return protobufjs@5.0.1
有什么想法吗?
在Node.jsconsole.log
calls util.inspect
under the hood. Which by default has a depth
value of 2.
为了打印对象的所有属性,您可以直接调用util.inspect
:
const util = require('util');
console.log(util.inspect(
MessageTypeAck.decode(message),
{ showHidden: true, depth: null }
));