JSONStream обрабатывает одни данные с помощью другого парсера

Я использую JSONStream для анализа данных с сервера, данные могут быть как {"error": "SomeError"} или {"article":[{"id": 123}]};

Мой код выглядит так

var request = require('request');
var JSONStream = require('JSONStream');

var articleIDParser = JSONStream.parse(['articles', true, 'id']);
var errorParser = JSONStream.parse(['error']);

request({url: 'http://XXX/articles.json'})
    .pipe(articleIDParser).pipe(errorParser);

errorParser.on('data', function(data) {
    console.log(data);
});

articleIDParser.on('data', someFuncHere);

Но, к сожалению, второй парсер не работает, даже когда сервер возвращает ошибку.

Я неправ в функции канала или JSONStream?

Заранее спасибо.

2 ответа

Ну, я использую следующий способ решения проблемы:

var request({url: 'http://XXX/articles.json'})
dest.pipe(articleIDParser)
dest.pipe(errorParser);

Объяснение в документации по Node.js Stream.

Функция обратного вызова события 'end' не имеет параметра данных. Вместо этого послушайте событие "data". В случае трубопровода слушайте событие конвейера в месте назначения.

var request, JSONStream, articleIDParser, errorParser;
request = require('request');
JSONStream = require('JSONStream');
articleIDParser = JSONStream.parse(['articles', true, 'id']);
errorParser = JSONStream.parse(['error']);

articleIDParser.on('pipe', function (src) {
    // some code
});
errorParser.on('pipe', function (src) {
    // some code
});
request({url: 'http://XXX/articles.json'}).pipe(articleIDParser).pipe(errorParser);

Примечание: JSONStream.getParserStream менее неоднозначен, можно подумать, что вы уже анализируете, пока получаете только поток синтаксического анализа / записи. Если у вас все еще есть проблемы, пожалуйста, дайте больше информации (кода) о JSONStream. Кстати, модуль Stream по-прежнему помечен как нестабильный.

Другие вопросы по тегам