我正在尝试找到一种方法,当数据无效时在可读流中发送 NestJS
HTTP Error
:
stream
.pipe(csv())
.on('data', (data) => {
try {
spreadsheetValidationSchema.parse(data);
spreadsheet.push(data);
} catch (err) {
throw new UnprocessableEntityException();;
}
})
.on('end', () => {
console.log(spreadsheet);
});
这里的问题是,当在流本身中抛出该错误时,终端只会发出警告,而不是实际返回错误。
throw new UnprocessableEntityException();
^
任何想法都值得赞赏。
我刚刚找到了解决方法。我将流管道包裹在 Promise 中。
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');
});
});