2017-02-01 9 views
0

Node.jsのボットで作業し、別のボットによって作成されたデータを展開します。そのボットはすべてのデータをJSONページに出力しますhttps://mee6.xyz/levels/267482689529970698?json=1JSONストリームの内容を取得する

しかし、私はJSONStreamによって生成されたデータのコンソール出力を見ることができません。 エクステンションシステムに使用するにはどうすれば入手できますか?

var request = require('request') 
    , JSONStream = require('JSONStream') 
    , es = require('event-stream') 

request({url: 'https://mee6.xyz/levels/267482689529970698?json=1'}) 
    .pipe(JSONStream.parse('rows.*')) 
    .pipe(es.mapSync(function (data) { 
    console.error(data) 
var stream = JSONStream.parse(['rows', true, 'doc']) //rows, ANYTHING, doc 

stream.on('data', function(data) { 
    console.log('received:', data); 
}); 
//emits anything from _before_ the first match 
stream.on('header', function (data) { 
    console.log('header:', data) // => {"total_rows":129,"offset":0} 
}) 
    })) 

答えて

1

いくつかの問題があります。 JSONStreamのドキュメントに記載されている2つのアプローチが混在しているようです。

まず、あなたは、単にこれが動作しない理由です名「行」は任意のフィールドが含まれていない要求しているJSON:.pipe(JSONStream.parse('rows.*'))

をあなたはこのような何かを行うことができ、出力を表示するには:

request({url: 'https://mee6.xyz/levels/267482689529970698?json=1'}) 
 
\t //So I'm getting all the players records 
 
\t .pipe(JSONStream.parse('players.*')) 
 
\t .pipe(es.mapSync(function (data) { 
 
\t \t console.log(data); 
 
\t }));

アウトJSONStreamとJSONPathドキュメント。

このストリームstream = JSONStream.parse(['rows', true, 'doc'])が作成され、次に失われるということです。あなたはそれを使用してノートです。このことができます

var stream = JSONStream.parse(['players']); 
 
stream.on('data', function(data) { 
 
\t console.log('received:', data); 
 
}); 
 

 
stream.on('header', function (data) { 
 
\t console.log('header:', data); 
 
}); 
 

 
//Pipe your request into created json stream 
 
request({url: 'https://mee6.xyz/levels/267482689529970698?json=1'}) 
 
\t .pipe(stream);

希望: は、だからあなたはあなたが行うことができます第一の方法が気に入らない場合。

+0

最初のものは完璧でした、私は私がどこかでばかげたエラーを作り出していると思った。私は最後の行をconsole.log(data.name)に変更しました。それはちょうどそれらを並べ替える方法を見つける必要があるので、私はそれを比較することができますので、私のdatabase.idのその一致にdata.id。 アレイやソリッドに並べ替えることができるかどうかを知りたいとき。ありがとう! –

関連する問題