Node.js 写入流发出错误后恢复流?

Node.js 写入流发出错误后恢复流?,node.js,Node.js,我使用nodejs流作为数据处理的管道。我遇到的问题是,只要我的writeStream目标发出错误,管道就会停止向writeStream传输数据。事实上,管道就是这样实现的。只要发出一个错误,writeStream就会与管道分离 不过,这似乎有点像我想要的那样咄咄逼人。我希望能够记录错误,但要保持管道畅通。我该怎么做 我的流如下所示: client.readStream() .pipe(process1) .pipe(process2) .pipe

我使用nodejs流作为数据处理的管道。我遇到的问题是,只要我的writeStream目标发出错误,管道就会停止向writeStream传输数据。事实上,
管道
就是这样实现的。只要发出一个错误,writeStream就会与管道分离

不过,这似乎有点像我想要的那样咄咄逼人。我希望能够记录错误,但要保持管道畅通。我该怎么做

我的流如下所示:

client.readStream()
        .pipe(process1)
        .pipe(process2)
        .pipe(process3)
        .pipe(mongo.writeStream())
        .on('data', console.log)
        .on('error', console.log);
process1
process2
process3
,在事件流库中实现为.map()

mongo写入流如下所示

function MongoStream(_mongo) {
  Stream.Writable.call(this, { objectMode : true });
}

util.inherits(MongoStream, Stream.Writable);

MongoStream.prototype._write = function (model, encoding, callback) {
  var self = this;
  console.log("Saving model");
  model.save(function(err, result) {
    if(err){ 
        self.emit('error', err);
    } else {
        console.log("model saved");
        self.emit('data', result);
    }
    callback();
  });
};

读取的流只是一个来自mongoose模型的
.find().stream()
为事件使用除
错误
以外的名称:

self.emit('error', err);
可以说:

self.emit('err', err);
这不会触发
.pipe
安装的侦听器

然后使用:
.on('err',console.log)


这可能比尝试更改
.pipe
以便不对
错误
执行任何操作要好

啊,是的。我考虑过这一点,但我仍然否认这是通常处理错误的方式。我认为这是最好的解决办法。谢谢