Я пытаюсь найти способ отправить NestJS HTTP Error
в читаемом потоке, когда данные недействительны:
stream
.pipe(csv())
.on('data', (data) => {
try {
spreadsheetValidationSchema.parse(data);
spreadsheet.push(data);
} catch (err) {
throw new UnprocessableEntityException();;
}
})
.on('end', () => {
console.info(spreadsheet);
});
Проблема здесь в том, что при выдаче этой ошибки внутри самого потока терминал просто предупреждает ее, а не возвращает ошибки.
throw new UnprocessableEntityException();
^
Любые идеи приветствуются.
Я только что нашел обходной путь. Я обернул трубу потока обещанием.
await new Promise((resolve, reject) => {
stream
.pipe(csv())
.on('data', (data) => {
try {
spreadsheetValidationSchema.parse(data);
spreadsheet.push(data);
} catch (err) {
reject(new UnprocessableEntityException());
stream.destroy();
}
})
.on('end', () => {
resolve('success');
});
});