Expressjs - 流cassandra结果集到客户端
问题描述:
我必须将由cassandra返回的json结果集流流到浏览器。我得到它的工作使用快速流,但所涉及的字符串化的每一行和并把它传递给res.pipe()Expressjs - 流cassandra结果集到客户端
我很奇怪,为什么下面没有工作:
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)
答
作为每docs为stream
方法卡桑德拉驾驶员:
Returns a Readable Streams2 object in objectMode
与此同时,底层ServerResponse.write
只接受String
或Buffer
作为发送到客户端时的数据块,而不是Object
。
这就是为什么它在每行被字符串化时都能正常工作。
您将不得不使用中间的Transform
流将选定的单元格值转换为字符串。