如何处理 NodeJS 流中的错误?

问题描述 投票:0回答:1

我正在尝试找到一种方法,当数据无效时在可读流中发送 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();
                ^

任何想法都值得赞赏。

node.js stream nestjs node-streams
1个回答
0
投票

我刚刚找到了解决方法。我将流管道包裹在 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');
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.