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
相关产品推荐
相关产品推荐

