2016-05-01 48 views
0

我正在使用這個偉大的模塊:protobuf.js用於node.js中的協議緩衝區。protobuf.js:print int64對象作爲node.js中的字符串

我int64字段類型(谷歌協議支持),我試圖將其打印到屏幕。

線:

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)返回[email protected]

任何想法?

+0

我也試過.decode64但仍然無法正常工作.. – ItayB

回答

2

在Node.js console.logcalls util.inspect under the hood。其中默認has a depth value of 2

爲了打印對象的所有屬性,你可以直接調用util.inspect

const util = require('util'); 

console.log(util.inspect(
    MessageTypeAck.decode(message), 
    { showHidden: true, depth: null } 
)); 
+2

或'的console.log('% j',MessageTypeAck.decode(message))'將對象輸出爲JSON。 – robertklep

+0

我會嘗試它並稍後更新..謝謝! – ItayB