2015-11-17 38 views
0

我有一个节点http服务器,它将大量数据从上游源传输到客户端。我的代码如下所示:Nodejs:在将数据传输到客户端时处理错误

handleRequest = function(req, res) { 
    var readable_stream = fetchDataFromUpstream(); 
    res.statusCode = 200; 
    readable_stream.pipe(res); 
} 

我的上游源可能会发出错误。处理它们的正确方法是什么?理想情况下,我想记录错误并向客户发送一个500状态响应报告问题。但是,如果错误发生在读取原始数据的中途,设置正确的状态为时已晚,对吗?我不想等到我开始将其发送到客户端之前将所有数据存储在内存中,因为它有很多数据。有没有一种干净的方式来处理这个问题?

回答

0

我想回调取回你的数据会更有效率。通过使用功能,像这样的第一个参数只是你fetchDataFromUpstream()转换为处理回调(我缩短了名字)

功能fromUpstream(CB){ /* ... */ 如果(ERR)返回CB (new Error(err)); cb(null,data); }

然后继续调用它像这样:

的handleRequest =函数(REQ,RES){ fetchData(功能fromUpstream(ERR,readableStream){ 如果(ERR)返回新错误(ERR); res.statusCode = 200; readableStream.pipe(res); }); }

不确定你已经检查了文档,但上面的例子是一个。

您的其他选择可能是一个事件绑定发射

https://nodejs.org/api/events.html

+0

我使用管道而不是回调的原因是为了避免内存中的所有数据,因为它可以是多个兆字节的内存...... – josh

+0

嗯。也许你应该改说你的问题 –

相关问题