在MySQL中使用节点的Streams

Way*_*inn 4 mysql stream node.js

按照Streams2的Piping结果示例,我试图将结果从MySQL传递到node.js中的stdout.

代码如下所示:

connection.query('SELECT * FROM table')
      .stream()
      .pipe(process.stdout);
Run Code Online (Sandbox Code Playgroud)

我收到此错误: TypeError: invalid data

Way*_*inn 11

说明

从这个项目的github 问题:

.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);
Run Code Online (Sandbox Code Playgroud)

在注意.pipe(stringifier)之前注意额外的.pipe(process.stdout)

  • 字符串(实际上是缓冲区)和对象模式之间的区别是非常重要的,但通常很容易被忽略。好好抓住这里。 (3认同)