如何在Rego中编写规则实现{key:[values]}到{value:[keys]}的对象转换
Rego权限映射转换规则
完整实现代码
package perm_reverse # 默认返回空对象 default output = {} output := {server: permissions | # 遍历所有权限类型(read/write/create) some perm_type # 遍历当前权限下绑定的所有服务器 server := input[perm_type][_] # 收集该服务器拥有的所有权限 permissions := [p | some p server == input[p][_] ] }
实现逻辑说明
- 外层采用对象推导式生成最终的映射结构:以服务器名称为键,权限列表为值
- 内层采用数组推导式完成权限筛选:遍历所有权限类型,匹配当前服务器所属的权限,最终组成权限数组
你可以直接将你的输入对象传入该规则,执行后即可得到符合要求的输出结果。
内容的提问来源于stack exchange,提问作者Sergey Bulavkin
相关产品推荐
相关产品推荐

