Node.js环境下基于用户角色动态调用函数的精简实现方案咨询
解决方案
核心思路是通过角色-处理函数映射表消除冗余的if分支判断,只需要提前构造一次映射关系,后续调用逻辑可简化为1行代码。
步骤1:构造角色处理映射表
// 把ROLE枚举值作为键,对应处理函数作为值 const roleHandlerMap = { [ROLE.REFERRINGPROVIDER]: referralUser, [ROLE.CONSULTINGPROVIDER]: consultingUser, [ROLE.PARENT]: parentUser, [ROLE.PHYSICIAN]: physicianUser }
步骤2:1行完成动态调用
直接通过用户角色code从映射表取对应函数执行即可,兼容原有的入参和async/await逻辑:
query = await roleHandlerMap[userRole.code](tabCode, userId, query)
可选优化(异常兼容)
如果存在未配置的角色,可加默认空处理避免报错:
// 不存在对应处理函数时返回原query,可根据业务需求调整默认逻辑 query = await (roleHandlerMap[userRole.code]?.(tabCode, userId, query) ?? query)
内容的提问来源于stack exchange,提问作者Priyanka Patel
相关产品推荐
相关产品推荐

