我正在使用https://www.npmjs.com/package/cassandra-driver的stream()函数从Cassandra读取数据,我列出了事件并将流传输到响应对象但是我收到此错误
错误:写完后
这是我的代码
const JSONStream = require('JSONStream');
res.write('{');
stringsToAppendToStream.push('\"Result\":');
const responseStream = stringsToAppendToStream.join(',');
res.write(responseStream);
let streamObject = casssandraClient.stream(generateSQL);
// console.log(sstreamObject);
streamObject.on('readable', function () {
let row;
while (row = this.read()) {
console.log(row);
streamObject
.pipe(JSONStream.stringify())
.pipe(res);
}
})
streamObject.on('end', function () {
console.log('ending')
res.write('}');
res.end();
})
我在编写数据时尝试了其他答案中给出的回调建议,但它没有解决问题
res.write(messages, function(err) { res.end(); });
似乎问题是我管道()响应,但我不知道如何解决它。
答案 0 :(得分:0)
我能够解决这个问题,可能是这个解决方案只适用于这个特定的用例,我们不必监听'redable'事件,而是直接将流传输到响应。
let streamObject = casssandraClient.stream(sql);
streamObject
.pipe(JSONStream.stringify())
.pipe(res, {
end: false
});
streamObject.on('end', function () {
res.write('}');
res.end();
})