在MySQL中使用节点的Streams

时间:2015-03-12 15:12:32

标签: mysql node.js stream

按照Piping results with Streams2上的示例,我正在尝试将结果从MySQL传递到node.js中的stdout。

代码如下所示:

connection.query('SELECT * FROM table')
      .stream()
      .pipe(process.stdout);

我收到此错误:TypeError: invalid data

2 个答案:

答案 0 :(得分:8)

说明

从这个项目的github issue

  

.stream()返回“objectMode”中的流。您无法将其传输到stdout或网络   套接字,因为“data”事件将行作为有效负载,而不是缓冲区块

修复

您可以使用csv-stringify模块解决此问题。

var stringify = require('csv-stringify');

var stringifier = stringify();


connection.query('SELECT * FROM table')
    .stream()
    .pipe(stringifier).pipe(process.stdout);

注意.pipe(stringifier)

之前的额外.pipe(process.stdout)

答案 1 :(得分:0)

随着 <button class="reset"> reset </button> <div class="grid"></div> 在 Node v10 中的引入,现在有另一种解决方案。

管道方法做了几件事:

  1. 允许您通过管道传输任意数量的流。
  2. 完成后提供回调。
  3. 重要的是,它提供了自动清理功能。这是优于标准 pipeline 方法的优点。
pipe