【发布时间】:2014-10-02 02:08:47
【问题描述】:
在使用 Nodejs/Expressjs 时,我很难弄清楚如何将数据流式传输回我的客户端。
我正在从我的数据库中获取大量数据,并且我正在分块进行,我想在获取数据时将其流式传输回客户端,这样我就不必将整个数据集存储在内存中一个 json 对象,然后再将其发送回去。
我希望数据以文件的形式流回,即我希望浏览器询问我的用户如何处理下载的文件。我之前正在创建一个文件系统写入流并将我的数据内容流式传输到文件系统,然后完成后我会将文件发送回客户端。我想消除中间人(在文件系统上创建 tmp 文件),只需将数据流式传输到客户端。
app.get(
'/api/export',
function (req, res, next) {
var notDone = true;
while (notDone) {
var partialData = // grab partial data from database (maybe first 1000 records);
// stream this partial data as a string to res???
if (checkIfDone) notDone = false;
}
}
);
我可以调用 res.write("some string data"),然后在完成后调用 res.end()。但是,我不能 100% 确定这实际上是在我编写时将响应流式传输到客户端。似乎 expressjs 正在存储所有数据,直到我调用 end 然后发送响应。这是真的吗?
使用 expressjs 将字符串数据块流式传输到响应的正确方法是什么?
【问题讨论】: