2017-07-18 2 views
0

Ich benutze Knoten 6.x (npm 3.x) mit restify (neueste). Wenn ein JavaScript-Objekt eine Eigenschaft enthält, die auf eine Ganzzahl gesetzt ist, sieht restify.send() standardmäßig so aus, dass diese Ganzzahl in "niedrige" und "hohe" Teile serialisiert wird - vermutlich die niedrigen/hohen 32-Bit-Komponenten einer 64 -bit Ganzzahlresponse.send (von node.js/restify app) standardmäßig serialisiert Integer in 32-Bit-Low/High-Teile?

Wie kann ich dieses Standardverhalten ausschalten, sodass Ganzzahlen nicht in Low- und High-Parts codiert werden?

Danke.

Antwort

1

Ich kann dieses Verhalten reproduzieren, wenn Sie integer verwenden, ist das, was Sie verwenden, um ganzzahlige Werte darzustellen, die JavaScript Number.MAX_SAFE_INTEGER überschreiten können?

Wenn ja, dann müssen Sie diese integer Instanzen auf eine geeignete JS Zahl konvertieren, sonst können sie nicht als Zahlenwert in JSON dargestellt werden:

Number(obj.intProperty) // or: obj.intProperty.toNumber() 

JEDOCH: Ich nehme an, es gibt einen Grund, für Sie mit integer. Wenn die durch obj.intProperty dargestellte Zahl zu groß ist, um als einfache JS Number dargestellt zu werden, kann die Konvertierung ungültige Ergebnisse liefern (deshalb ist die JSON-Darstellung eines integer ein Objekt, das aus zwei 32-Bit-Werten besteht).

EDIT: stellt sich heraus, dass das Problem durch die Neo4j Fahrer Darstellung von 64-Bit-Integer verursacht wurde, wie hier dokumentiert: https://www.npmjs.com/package/neo4j-driver#a-note-on-numbers-and-the-integer-type

+0

Also, ich bin die Schraube/javascript-Treiber von einem Neo4j Aufzeichnungen zu erhalten Graphdatenbank. Ich vermute, dass der bolt/javascript-Treiber Integer-Werte als Typ "integer" liefert und das Low/High-Verhalten auslöst. Ich werde weiter graben, aber es scheint übertrieben, eine Zahl wie "5" in niedrige/hohe Teile zu kodieren. –

+0

@KodeCharlie Es sieht so aus, als wäre es der Neo4J-Treiber, der das tut: https://www.npmjs.com/package/neo4j-driver#a-note-on-numbers-and-the-integer-type – robertklep

+0

Der Link Sie haben angegeben, wie beschrieben wird, wie neo4j ganze Zahlen genau beschreibt, was ich sehe. Ich werde meinen Code entsprechend korrigieren. Vielen Dank. –

Verwandte Themen