如何简化判断admin/power非空时返回数据的JS代码?
简化代码逻辑方案
首先你的原有代码存在逻辑缺陷:当mreq.admin为null时会直接return,导致后续对power字段的判断完全无法执行,没法实现"admin或power不为null时返回对应数据"的需求。
下面是修正并简化后的代码:
const mreq = await Model.findOne({ where: { id: req.params.id, old: req.params.times } }); if (!mreq) return; // 优先返回admin字段(如果不为null) if (mreq.admin !== null) { return res.json(mreq.admin); } // admin为null时,检查power字段 if (mreq.power !== null) { return res.json(mreq.power); } // 两个字段都为null时直接返回 return;
逻辑说明
- 先判断查询结果
mreq是否存在,不存在直接返回 - 先检查
admin字段,只要不为null就返回该字段数据 - 若
admin为null,再检查power字段,不为null则返回该字段数据 - 两个字段都为
null时,直接返回不响应数据
如果你希望只要其中一个字段不为null就返回,不区分优先级(比如同时保留两个非null字段返回),可以改成以下版本:
const mreq = await Model.findOne({ where: { id: req.params.id, old: req.params.times } }); if (!mreq) return; const responseData = {}; if (mreq.admin !== null) { responseData.admin = mreq.admin; } if (mreq.power !== null) { responseData.power = mreq.power; } // 存在非null字段则返回对应数据,否则不返回 if (Object.keys(responseData).length > 0) { res.json(responseData); }
内容的提问来源于stack exchange,提问作者user21177168
相关产品推荐
相关产品推荐

