2017-02-14 5 views
0

Мне нужно передать поток результатов json, возвращенный cassandra в браузер. Я получил это работает, используя экспресс-поток, но которые участвуют stringifying в каждую строку и и передавая его 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

в соответствии с docs для stream метода драйвера Кассандры:

Returns a Readable Streams2 object in objectMode

В то же время базовый ServerResponse.write принимает только String или Buffer в качестве части данных при отправке клиенту, а не Object.

Именно поэтому он работает, когда каждая строка стробирована.

Вам нужно будет использовать поток Transform в середине, чтобы преобразовать выбранные значения ячейки в строку.

Смежные вопросы