我必须将cassandra返回的json结果集流传输到浏览器。我使用express-stream工作,但是涉及对每一行进行字符串化并将其传递给res.pipe()
我想知道为什么以下没有工作:
app.get('/api/v1/streamevents', function (req, res) {
let cstream = client.stream(selectQuery, ['339aa84a-4bba-411f-a4fb-38167a987cd2'],options)
cstream.pipe(res)
})
我收到以下错误:
TypeError: First argument must be a string or Buffer
at ServerResponse.write (_http_outgoing.js:458:11)
at ResultStream.ondata (_stream_readable.js:555:20)
at emitOne (events.js:96:13)
at ResultStream.emit (events.js:188:7)
at ResultStream.Readable.read (_stream_readable.js:381:10)
答案 0 :(得分:2)
根据stream
对于Cassandra驱动程序的ServerResponse.write
方法:
返回objectMode
中的可读Streams2对象
同时,基础String
在发送到客户端时仅接受Buffer
或Object
作为数据块,而不是Transform
。
这就是为什么它在每一行被字符串化时都有效。
您必须在中间使用{{1}}流将所选单元格值转换为字符串。