如何从可写入的stream中创build可读stream? (Node.js的)
我使用Exceljs快速创buildExcel数据
我想在内存中caching这个东西,然后使用Koa发送给用户。
Exceljs的write
方法需要一个writableStream:
workbook.xlsx.write(writableStream, options)
但Koa预计可读stream:
response.body = readableStream
我知道我可以把一个可读的stream转换成一个可写的stream,但是我怎么做相反的? 我希望Exceljs写入可写入stream,并从相同的stream读取Koa。 我非常沮丧的streamAPI!
其他20个事情中,我试过这个:
const ReadableStream = require("memory-streams").ReadableStream const reader = new ReadableStream() const writer = new stream.Writable({ write: function(chunk, encoding, next) { console.log(chunk.toString()) // reader.push(chunk, encoding) next() } }) const reader = new MemoryStream(null, {readable: true}) // reader.write = reader.unshift const writer = reader workbook.xlsx.write(writer, {}) return reader
但它不起作用,我得到了一些奇怪的错误,关于不能写入一个closures的stream。 即使我处理错误,但是,我的Excel文件不会打开。
那么我怎样才能从一个可写的stream中创build一个可读的stream呢?
你需要一个转换stream。 它是可读可写的。
stream = new require('stream').Transform() stream._transform = function (chunk,encoding,done) { this.push(chunk) done() }