首页 > 解决方案 > 使用 fast-csv 如何处理数据无效,如何访问错误对象?

问题描述

使用fast-csv 还支持异步验证,回调示例位于

快速 csv 示例

如何访问“数据错误”事件中的错误?

validate 事件有一个回调,原型为 error、boolean、string。

.validate((row: Winner, processValidationError): void => {
  const valid = /^[a-zA-Z0-9\\]*$/.test(row.groupId);
  if (valid) {
    return processValidationError(null, false,'ok' )
  }
  // Error, boolean, reason: string
  const error = new WinnerValidationError("Failed to read groupId", 'groupId')
  return processValidationError(error, true,'groupId is invalid');
  })
}

在数据无效时,原型是行,行号字符串并且没有错误

 .on('data-invalid', (row, rowNumber: number, reason: string) => {
  console.log(error.message + error.key, `Invalid [rowNumber=${rowNumber}] 
    [row=${JSON.stringify(row)}] [reason=${reason}]`)
    processValidationError(row,rowNumber,reason)
  })

标签: typescriptfast-csv

解决方案


错误作为第三个参数(原因)传入:

.on('data-invalid', (row, rowNumber, reason) => {
    console.log(`Invalid row ${rowNumber}: ${reason}`);
})

如果您抛出错误而不是字符串(这是一种很好的做法),您可以按如下方式访问它:

.on('data-invalid', (row, rowNumber, error) => {
    console.log(`Invalid row ${rowNumber}: ${error.message}`);
})

推荐阅读