目前我有一个模块拉这样的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必须是文件路径...
我在这里是正确的轨道还是我还需要做其他事情?
答案 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
});