Node.js JSONStream使用不同的解析器处理一个数据

Node.js JSONStream使用不同的解析器处理一个数据,node.js,jsonstream,Node.js,Jsonstream,我使用JSONStream解析来自服务器的数据,数据可以是{error:SomeError}或{articles:[{id:123}]} 我的代码是这样的 var request = require('request'); var JSONStream = require('JSONStream'); var articleIDParser = JSONStream.parse(['articles', true, 'id']); var errorParser = JSONStream.pa

我使用JSONStream解析来自服务器的数据,数据可以是{error:SomeError}或{articles:[{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方面错了吗

提前感谢。

Node.js中的解释

“end”事件的回调函数没有数据参数。改为侦听“数据”事件。如果是管道,请在目的地监听事件

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的信息。顺便说一下,流模块仍然被标记为不稳定。

我使用以下方法解决了这个问题:

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

谢谢Kem,这是我的错误,我更正了代码,但问题仍然存在。似乎忽略了第二个解析器