如何返回响应对象的属性并同时返回自定义新对象
解决方案
直接调整原方法的返回逻辑即可,首先要修正原代码里的两处常见错误,再按你的业务需要组合返回对象:
- 修复
Authorization请求头格式错误:Bearer后缀必须加空格,否则服务端会无法正常解析JWT - 原代码
jwt.sign参数中_id: visit属于语法错误,需要取visit对象的id字段赋值 - 增加错误分支处理,避免下游调用时拿到未定义的返回值
修改后的完整代码如下:
async createVisit(patientId: string, visitorId: string) { // 这里补充原逻辑缺失的visit对象构造,字段可按业务需求调整 const visit = { patientId, visitorId, createTime: Date.now() } const userJWT = jwt.sign( { _id: visit._id, refreshCount: 0 }, this.localConfig.spirit.jwtSecret ) const visitURL = this.localConfig.spirit.url let response = await fetch(visitURL, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer ' + userJWT // 修复空格缺失问题 }, body: JSON.stringify(visit) }); if (response.ok) { const result = await response.json(); // 按需提取result属性,组合自定义对象返回 return { // 以下是从result提取的属性示例,可按接口实际返回结构调整 visitId: result.id, auditStatus: result.status, visitValidTime: result.validTime, // 以下是你需要新增的自定义对象 customData: { source: 'visitCreateModule', requestTime: Date.now() } } } // 处理请求失败场景 throw new Error(`创建访问记录失败,响应状态码:${response.status}`) }
其他类的方法调用示例:
async businessHandler() { try { const visitResult = await this.visitService.createVisit('1001', '2002'); // 直接访问返回的属性即可 console.log(visitResult.visitId, visitResult.customData); } catch (e) { console.error(e.message); } }
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

