如何在包含数组的Object中为Error对象的Message字段传入动态值
正确实现方案
核心调整逻辑
你需要给错误模板预留动态占位符,同时改造错误码生成函数支持参数替换,修正原有代码中无返回值、查找逻辑不合理的问题即可实现需求。
具体代码实现
1. 全局错误模板配置(预留占位符)
// 全局错误配置,{prefix}为动态参数占位符 const serviceErrors = { errors: [ { Code: 'Error1', Message: "{prefix} Missing stamp in the header" } ] }
2. 改造ErrorCode函数
function ErrorCode(erCode, dynamicParams = {}) { // 用find替代filter,直接拿到匹配的单个错误模板,效率更高 const errTemplate = serviceErrors.errors.find(er => er.Code === erCode); // 兜底处理未匹配到的错误码 if (!errTemplate) return { Code: 'UnknownError', Message: '未定义的错误类型' }; // 批量替换所有动态占位符 let finalMessage = errTemplate.Message; Object.entries(dynamicParams).forEach(([key, value]) => { finalMessage = finalMessage.replaceAll(`{${key}}`, value); }); // 返回处理完成的错误对象 return { Code: errTemplate.Code, Message: finalMessage }; }
3. 调整校验逻辑,传入动态参数
function validateRequestHeaders(req) { const Error = { value: [] }; return new Promise(function (resolve, reject) { const stamp = req.header("stamp")?.toLowerCase() || ''; if(stamp !== 'dp'){ // 传入动态值DP替换占位符 Error.value.push(ErrorCode("Error1", { prefix: 'DP' })); } resolve(Error); }) }
实现后生成的错误对象Message字段就是你需要的'DP' Missing stamp in the header效果,该方案也支持同时传入多个动态参数替换多个占位符的场景。
内容的提问来源于stack exchange,提问作者Rajat Singh
相关产品推荐
相关产品推荐

