【发布时间】:2018-10-04 14:49:00
【问题描述】:
我正在处理基于角色的权限,我有以下数组,
let Roles = {
[
{ model: 'user', property: 'find', permission: 'allow' },
{ model: 'user', property: 'create', permission: 'allow' },
{ model: 'user', property: 'update', permission: 'deny' },
{ model: 'user', property: 'delete', permission: 'deny' }
],
[
{ model: 'registration', property: 'find', permission: 'allow' },
{ model: 'registration', property: 'create', permission: 'deny' },
{ model: 'registration', property: 'update', permission: 'deny' },
{ model: 'registration', property: 'delete', permission: 'deny' }
]
[
{ model: 'schedule', property: 'find', permission: 'allow' },
{ model: 'schedule', property: 'create', permission: 'allow' },
{ model: 'schedule', property: 'update', permission: 'allow' }
{ model: 'schedule', property: 'delete', permission: 'deny' }
]
}
我正在尝试获得以下输出
let userPermissions = [{
'menu_name': 'user',
'canFetchData': true,
'canCreateData': true,
'canUpdateData': false,
'canDeleteData': false,
}]
let registrationPermissions = [{
'menu_name': 'registration',
'canFetchData': true,
'canCreateData': false,
'canUpdateData': false,
'canDeleteData': false,
}]
let schedulePermissions = [{
'menu_name': 'schedule',
'canFetchData': true,
'canCreateData': true,
'canUpdateData': true,
'canDeleteData': false,
}]
生成结果的条件是,对于给定的模型和属性,如果权限是允许的,则应为真,否则为假。
我试过写 if condition 并赋值 true , if condition matches 。但是对于第二个数组,值是覆盖的
从 Roles 数组中,我将每个数组传递给以下函数并返回结果
private canFetchData;
private canCreateData;
private canUpdateData;
private canDeleteData;
filterAndApplyPermission(data) {
for (let i = 0; i < data.length; i++) {
if (data[i].property === 'find' && data[i].permission === 'ALLOW') {
this.canFetchData = true;
} else if (data[i].property === 'create' && data[i].permission === 'ALLOW') {
this.canCreateData = true;
} else if (data[i].property === 'update' && data[i].permission === 'ALLOW') {
this.canUpdateData = true;
} else if (data[i].property === 'delete' && data[i].permission === 'ALLOW') {
this.canDeleteData = true;
}
}
const grouped_permission = {
'menu': data[0].model,
'canFetchData': this.canFetchData,
'canCreateData': this.canCreateData,
'canUpdateData': this.canUpdateData,
'canDeleteData': this.canDeleteData,
};
return grouped_permission;
}
【问题讨论】:
-
你真的想要三个只有一个对象的数组吗?还是您只需要对象?
-
可能是
this.canFetchData = true;中的this指的是同一个对象...不过,我们还需要一些代码 -
请提供完整的上下文,您的代码中
this的值是什么? -
也请花几分钟阅读minimal reproducible example。为其他人提供足够的代码来运行和重现问题将很快解决问题
-
另外,
Roles的语法好像不对
标签: javascript arrays typescript angular5