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 по-прежнему помечен как нестабильный.