2017-08-21 10 views
1

socket.io 2.0経由でJSONデータを送信するときにエラーが発生することがあります。「未処理の拒否エラー:整数が安全ではありません。このようなエラーが発生するツイートオブジェクトを送信する例を次に示します。未処理の拒否エラー:整数が安全でない

コード例: https://gist.github.com/whoisstan/dcba1471094b984514c436fd395364e2

私はノード6.11.2にそれらのパッケージを使用しています:

  • "Redisの": "^ 2.8.0"、
  • "socket.io": "〜2.0"、
  • "socket.io-Redisの": "^ 5.1.0"

は、JSONペイロードは大きすぎる単にですか?はいの場合は、ペイロードをどのように制約するのですか? Javasvcriptで

+0

リンクを介して利用できるだけでなく、質問を理解して回答するために必要なコードを実際の質問に貼り付ける必要があります。これは、リンクが時間の経過とともに変化したり消えたりする習慣を持っているために、長期的な参照として役に立たない問題をレンダリングするためです。コードの関連する部分を直接質問に追加し、適切にフォーマットしてください。 – jfriend00

+0

このJSONのソースは何ですか?それはどこから来たのですか? – jfriend00

+0

これはtwitter apiからまっすぐだから、それがsocketioのペイロードとしてうまくいきませんと私は混乱していた。 –

答えて

1

マックス安全な整数である:上限を超え

899068272867328000 

9007199254740991 

あなたのJSONは次のように整数が含まれています。必要はありません

物事が実際に数字(これらの多数の一つの「ID」と表示されるように使用されるかもしれないだけではなく、数字の文字列として使用することができそう文字列ではなく数値としてJSONにそれらを置きます。

このデータはツイッターからのものである場合、ここでの問題の議論は、Twitterの開発ドキュメントにあります:Twitter IDs注、JSON構造が実際に文字列である代替としてid_str提供しています

はそして、その記事ごとに、。。 idの値を取り除くために解析する前にJSONを前処理する必要があるか、またはexをスローしないパーサーを取得する必要がありますこれらの長いIDを使用すると、切り捨てるか、nullまたはNaNに変換します。どちらの場合でも、コードは.idではなく.id_strを使用する必要があります。

+0

良い発見と良い答え。この値はtwitter APIペイロードから取得され、解析され、mongoに保存され、キューに入れられ、ソケットを介して送信されます。 私は、検索しているすべてのデータをあらかじめ解析して調整する必要がなく、エンコンディングを破らないようにしたいと思っています。 –

関連する問題