如果其中一个数据存储类缺少describe权限,wakanda.getCatalog()将返回错误

时间:2017-01-05 14:16:04

标签: wakanda

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

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'])时,将返回错误“无权描述角色数据存储类”。 - >行

2 个答案:

答案 0 :(得分:1)

不确定是否还有完美答案所需的所有细节(不确定您的模型是如何定义的(User,UserProfile ..) 。但不管这是怎么回事。 在getCatalog()方法中传递Dataclass时,它只检索指定的数据类。

注意如果您的数据类已链接(关系<>),则必须添加相关的数据类(自动展开扩展)

您应该只需编写return this.wakandaService.getCatalog(['Company', 'User'])

即可使其正常工作

当然,您也可以传递一个空数组来获取整个目录 this.wakandaService.getCatalog()

你能否证实我解决了你的问题?

谢谢:)

答案 1 :(得分:1)

真的很抱歉,我完全错过了你更新帖子的事实。 感谢btw的更新,它现在非常清楚。 好吧,我做了一个快速的解决方案,尝试再现你的问题。 (它不完全相同,但有帮助)

有几点:

  • 我们最近更新了getCatalog方法,使其更加与REST API相同。在我们当前的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++){权限上有错误。 一旦我们解决了这个问题,我就会用描述权限重做相同的测试并尽快回复你。