javascript - 分解原始错误以使用数组返回mongodb错误的无效数据

标签 javascript mongodb error-handling

我正在Express中使用错误处理,并且过去用数组返回MongoDB错误的无效数据
我用了

else if (process.env.NODE_ENV === 'production') {
    
    let error = { ...err };

    if (error.name === 'CastError') error = handleCastErrorDB(error);
    if (error.code === 11000) error = handleDuplicateFieldsDB(error);
    if (error.name === 'ValidationError')
      error = handleValidationErrorDB(error);

    sendErrorProd(err, res);
  }

但不适用于该流程。env.NODE_ENV==='生产'
由于let(错误= {... err};)

最佳答案

err是否具有可枚举的属性?我的猜测是it doesn't,因此对象传播语法不会将任何内容复制到对象文字中。您可能只想使用原始的err对象,我认为您的代码应该是

if (process.env.NODE_ENV === 'production') {
    let error;
    if (err.name === 'CastError')
        error = handleCastErrorDB(err);
    else if (err.code === 11000)
        error = handleDuplicateFieldsDB(err);
    else if (err.name === 'ValidationError')
        error = handleValidationErrorDB(err);
    else
        error = { ...err };

    sendErrorProd(err, res);
}

关于javascript - 分解原始错误以使用数组返回mongodb错误的无效数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63862746/

相关文章:

python-3.x - 用较短且正确的版本改进我的长python代码的建议

javascript - 如何将函数内的捕获错误传递给父级

node.js - 无法关闭与 Node.js 的 MongoDB 连接?

python - 如何将 MongoDB 与 Keras 的 Sequence 类或生成器一起使用?

linux - 增加 MongoDB 最大连接数

python - numpy std计算: TypeError: cannot perform reduce with flexible type

javascript - 为什么在nodejs中打印对象名称是prototype.constructor的名称而不是构造函数的名称?

javascript - 粘滞JS : how to change css when element is "sticky"?

javascript - 如何在 JavaScript 函数中使用 Strut 标签?

apache-flex - 从TextInput扩展组件时出现Flex MXML错误