2017-02-14 60 views
0

我必須將由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) 

回答

2

作爲每docsstream方法卡桑德拉駕駛員:

Returns a Readable Streams2 object in objectMode

與此同時,底層ServerResponse.write只接受StringBuffer作爲發送到客戶端時的數據塊,而不是Object

這就是爲什麼它在每行被字符串化時都能正常工作。

您將不得不使用中間的Transform流將選定的單元格值轉換爲字符串。