【发布时间】:2021-09-06 20:21:45
【问题描述】:
我试图了解流式传输的目的(主要是从服务器到浏览器或应用程序等可视客户端)。我很清楚发送数据块而不是等待所有数据到达的基本概念。我可以很容易地想到加载音频或视频,甚至是照片等用例。但是还有其他用例吗?用于发送文本数据或 jsons?
【问题讨论】:
标签: javascript node.js stream streaming
我试图了解流式传输的目的(主要是从服务器到浏览器或应用程序等可视客户端)。我很清楚发送数据块而不是等待所有数据到达的基本概念。我可以很容易地想到加载音频或视频,甚至是照片等用例。但是还有其他用例吗?用于发送文本数据或 jsons?
【问题讨论】:
标签: javascript node.js stream streaming
我已经使用流式传输从 mysql 表中发送所有记录。所以想象一下有数百万条记录,你想将所有记录提取到一个 csv 文件中。在这个用例中,您不能在没有任何过滤器/限制/偏移的情况下执行原始 findAll,因为它会尝试将所有记录放入内存,并且当表变大时它会不适合。
所以我没有使用一个 findAll,而是做了几个 findAll,每个返回大约 50k 条记录,因为我使用了 limit 和 offset。在每次查询之后,我将 50k 条记录块发送到流中,然后再次查询另外 50k 条记录。以递归方式执行此操作,直到没有更多记录(通过限制和偏移量控制)。 我有一个休息端点,所以当用户点击端点时,它会下载包含所有表记录的 .csv 文件。
我在 postgres 中找到了一篇关于它的文章:https://medium.com/geoblinktech/how-to-export-a-postgresql-table-as-csv-with-node-js-streams-578d53434e80(这使用了 COPY 运算符)
【讨论】: