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) 

作为每docsstream方法卡桑德拉驾驶员:

Returns a Readable Streams2 object in objectMode

与此同时,底层ServerResponse.write只接受StringBuffer作为发送到客户端时的数据块,而不是Object

这就是为什么它在每行被字符串化时都能正常工作。

您将不得不使用中间的Transform流将选定的单元格值转换为字符串。