fs.readstream读取一个对象然后管道写入文件?

时间:2014-08-04 15:09:27

标签: json node.js object stream

目前我有一个模块拉这样的SQL结果:

[{ID:' test',NAME:' stack'},{ID:' test2',NAME:' stack' }]

我想要将文件写入文件,以便稍后我可以将其作为对象读取,但我想通过流编写它,因为有些对象真的非常庞大并且将它们保留在内存中不再有用。 / p>

我正在使用mssql https://www.npmjs.org/package/mssql

我被困在这里:

    request.on('recordset', function(result) {
        console.log(result);
    });

如何将其传输到可写流?我看到对象模式的选项,但我似乎无法弄清楚如何设置它?

    request.on('recordset', function(result) {
        var readable = fs.createReadStream(result),
            writable = fs.createWriteStream("loadedreports/bot"+x[6]);
        readable.pipe(writable);
    });

这只是错误,因为createReadStream必须是文件路径...

我在这里是正确的轨道还是我还需要做其他事情?

1 个答案:

答案 0 :(得分:1)

你几乎走在正确的轨道上:你只是不需要一个可读的流,因为你的数据已经到达了块。

然后,您可以创建实际'recordset' - 事件的可写流OUTSIDE,否则每次获得新块时都会创建一个新流(这不是您想要的)。

试试这样:

 var writable = fs.createWriteStream("loadedreports/bot"+x[6]);
 request.on('recordset', function(result) {
    writable.write(result);
 });

修改

如果记录集已经太大,请使用row - 事件:

   request.on('row', function(row) {
   // Same here
   });