wakanda javascript客户端的方法it('create(): should create a transport cost attachment', function (done) {
var transportCost = {expenseId: 123};
var data = {};
$httpBackend.expectPOST('/api/expense-claim/123/transport-cost-attachment/').respond(201, transportCost);
service.create(transportCost, data).then(function () {
done();
});
$httpBackend.flush();
});
返回以下错误,如果没有数据类数组传递给该方法,并且当前用户缺少模型中的描述权限之一(这很可能案件)。
错误:
getCatalog()
使用{
"__ERROR": [
{
"message": "No permission to describe the User datastore class",
"componentSignature": "dbmg",
"errCode": 1609
}
]
}
方法的最佳做法是什么?是否最好在每次调用服务器时传递getCatalog()
方法所需的数据类?
有角公司服务的示例:
getCatalog()
更新
的DataModel
权限
角色&用户数据类需要“管理员”权限。 UserProfile数据类需要“用户”权限,并从用户数据类扩展。
错误
以用户身份登录并调用@Injectable()
export class CompanyService {
constructor(private wakandaService: WakandaService,
private exceptionService: ExceptionService) {
}
getCompanyList(): any {
return this.wakandaService.getCatalog(['Company'])
.then(data => {
return data.UserProfile.getProfile();
})
.then(data => {
return data;
})
.catch(error => this.exceptionService.error(error));
}
}
时,将返回错误“目录中不存在所需的角色dataClass”。 - >它是否正确?为什么通过REST API工作相同?
http://localhost:8081/rest/ $ catalog / UserProfile工作正常。
以用户身份登录并调用getCatalog(['UserProfile'])
时,将返回错误“无权描述角色数据存储类”。 - >行
答案 0 :(得分:1)
不确定是否还有完美答案所需的所有细节(不确定您的模型是如何定义的(User,UserProfile ..) 。但不管这是怎么回事。 在getCatalog()方法中传递Dataclass时,它只检索指定的数据类。
注意如果您的数据类已链接(关系<>),则必须添加相关的数据类(自动展开扩展)
您应该只需编写return this.wakandaService.getCatalog(['Company', 'User'])
当然,您也可以传递一个空数组来获取整个目录
this.wakandaService.getCatalog()
你能否证实我解决了你的问题?
谢谢:)
答案 1 :(得分:1)
真的很抱歉,我完全错过了你更新帖子的事实。 感谢btw的更新,它现在非常清楚。 好吧,我做了一个快速的解决方案,尝试再现你的问题。 (它不完全相同,但有帮助)
有几点:
getCatalog(['UserProfile', 'Role', User])
版本中,当您拥有扩展数据类和相关的Dataclass时,您必须在getCatalog中添加所有数据类
在你的情况下,它将是: wakClient.getCatalog(['UserProfile', 'User', 'Role']).then(function (ds) {
console.log(ds);
ds.UserProfile.query().then(function (result)
{
console.log(result)
}
)
});
这样做你就可以了
read Permissions
它有效
describe
完成了此快速测试,并没有描述,因为我们目前在for(int n, int t=0; t!=n; t++){
权限上有错误。
一旦我们解决了这个问题,我就会用描述权限重做相同的测试并尽快回复你。