错误:在节点结束后写入

时间:2018-03-21 18:31:11

标签: javascript node.js

我正在使用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(); });

似乎问题是我管道()响应,但我不知道如何解决它。

1 个答案:

答案 0 :(得分:0)

我能够解决这个问题,可能是这个解决方案只适用于这个特定的用例,我们不必监听'redable'事件,而是直接将流传输到响应。

let streamObject = casssandraClient.stream(sql);

                    streamObject
                        .pipe(JSONStream.stringify())
                        .pipe(res, {
                            end: false
                        });

                    streamObject.on('end', function () {

                        res.write('}');
                        res.end();

                    })