2016-05-01 12 views
0

Ich verwende dieses große Modul: protobuf.js für Protokollpuffer in node.js.protobuf.js: print int64 Objekt als Zeichenfolge in node.js

Ich habe Int64 Feldtyp (der von Google-Protokoll unterstützt) und ich versuche, es auf dem Bildschirm zu drucken.

Die Linie:

console.log(MessageTypeAck.decode(message)); 

Drucken Sie die folgenden Schritte aus:

{ trace: 
    [ { topic: 'Genesis', partition: 0, offset: [Object] }, 
    { topic: 'DataManager', partition: 0, offset: [Object] } ], 
    sourceModuleName: 'DataManager', 
    sourceModuleID: 10040 } 

(Offset-Felder wie [Object] gedruckt) Und die Zeile:

console.log(MessageTypeAck.decode(message).trace[1].offset.toString()); 

Drucke:

9217 

(Der tatsächliche Wert). Warum ruft der erste Aufruf nicht auch toString() von Long-Objekt auf?

Warum gewünschte ausgegeben:

{ trace: 
    [ { topic: 'Genesis', partition: 0, offset: 9217 }, 
    { topic: 'DataManager', partition: 0, offset: 9217 } ], 
    sourceModuleName: 'DataManager', 
    sourceModuleID: 10040 } 

ich diese issue gefunden habe, aber als ich, sollte ich nicht etwas Besonderes, um es zu verstehen ..

ich auch this gefunden habe - meine Version (npm Liste protobufjs) zurück [email protected]

Irgendwelche Ideen?

+0

ich auch .decode64 habe versucht, aber immer noch nicht funktioniert .. – ItayB

Antwort

2

In Node.js console.logcalls util.inspect under the hood. Was standardmäßig has a depth value of 2.

Um alle Eigenschaften eines Objekts zu drucken, können Sie util.inspect direkt anrufen:

const util = require('util'); 

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

Oder 'console.log ('% j ', MessageTypeAck.decode (Nachricht)) 'um das Objekt als JSON auszugeben. – robertklep

+0

Ich werde es versuchen und später aktualisieren .. Danke! – ItayB