You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js如何从回调错误对象中提取仅错误信息?

提取Node.js数据库错误信息并区分错误类型

首先,Node.js的标准Error对象本身就自带message属性,这就是错误的核心描述信息,你可以直接通过err.message提取关键内容,不用返回整个错误对象。

而针对你遇到的SQL错误(重复条目、长度超限等),常用的数据库驱动(比如mysql、mysql2)会给错误对象附加额外属性,最实用的是code(错误码),通过这个错误码可以精准判断错误类型,返回对应自定义提示:

修改后的代码示例

conn.query(sql, params, function (err, rows) {
    if (err) {
        // 提取原始错误信息
        const rawMsg = err.message;
        // 根据驱动提供的错误码判断类型,生成自定义提示
        let customTip;
        switch(err.code) {
            case 'ER_DUP_ENTRY':
                customTip = '该条目已存在,请勿重复提交';
                break;
            case 'ER_DATA_TOO_LONG':
                customTip = '输入内容长度超出限制,请调整后重试';
                break;
            // 可以继续添加其他需要处理的错误码
            default:
                customTip = rawMsg; // 未匹配到的错误返回原始信息
        }
        // 把自定义提示传入回调
        callback(new Error(customTip));
    }
    // ... 后续业务逻辑
});

注意事项

  • 不同数据库驱动的错误码规则不同:比如PostgreSQL的驱动pg,重复键的错误码是23505,而非ER_DUP_ENTRY,需要查阅你所用驱动的官方文档确认错误码对应关系。
  • 不要直接把原始错误对象返回给前端或外部接口,避免暴露SQL语句、数据库结构等敏感信息,用自定义提示更安全也更友好。

内容的提问来源于stack exchange,提问作者stackuser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:52:17