Javascript 节点流停止,不会触发任何错误或事件
我正在从数据库中读取100k数据。我使用@database/pg npm模块在可读流中读取它。下面是代码片段Javascript 节点流停止,不会触发任何错误或事件,javascript,node.js,stream,Javascript,Node.js,Stream,我正在从数据库中读取100k数据。我使用@database/pg npm模块在可读流中读取它。下面是代码片段 /* eslint-disable new-cap */ const { Transform } = require('stream'); const _ = require('lodash'); const { sql } = require('@databases/pg'); const { Op, fn, col } = requi
/* eslint-disable new-cap */
const { Transform } = require('stream');
const _ = require('lodash');
const { sql } = require('@databases/pg');
const { Op, fn, col } = require('sequelize');
const { chunk } = require('lodash');
const db = require('../temp/database');
const sequelize = require('../models/index.js');
const Logger = require('../utils/logger');
const logger = new Logger();
const readExpert = new Transform({
readableObjectMode: true,
writableObjectMode: true,
transform(chunk, encoding, callback) {
logger.log(`Getting all the experts`, 'info');
sequelize['CleanExpert']
.findAll({ });
}
callback();
)}
class ConsolidationController {
static async addData(req, res) {
try {
const read = db.queryNodeStream(
some query
);
read.on('data', (chunk) => {
const buffer = readExpert.write(chunk);
if (!buffer) {
logger.log(
`Buffer is full and read stream is ${read.isPaused()}`,
'info'
);
read.pause();
logger.log(`Now read stream is ${read.isPaused()}`, 'info');
}
});
read.on('error', (err) => {
console.log('error while reading', err);
});
read.on('finish', (err) => {
console.log('finish reading');
});
readExpert.on('drain', () => {
logger.log(
`write stream is drained and read stream is ${read.isPaused()}`,
'info'
);
read.resume();
logger.log(
` now read stream is ${read.isPaused()} start writing again`,
'info'
);
});
readExpert.on('end', () => {
console.log('inside read expert end');
});
readExpert.on('error', (err) => {
console.log('Error..........................', err);
});
readExpert.on('finish', () => {
console.log(' read Finished');
});
readExpert.on('close', () => {
console.log(' read close');
});
} catch (error) {
console.log(error);
}
return res.send('ok');
}
}
module.exports = ConsolidationController;
现在,流在一组特定的数据之后停止运行,但是我的读取流会发出finish事件,但是readExpert不会发出任何类型的事件,它只是停止没有错误什么都没有