重新排列的 OneToOne 连接
Restangular OneToOne connection
在我的客户申请的#/dossiers/{id}/offertes
我需要从休息中获取我的档案 api/dossiers/{id}。
然后在那个档案上我需要得到相应的offerte api/dossiers/{id}/offerte
从那里我会得到我的 offerteRecords api/offertes/{id2}/records
我将包含我的 REST 数据 here
第一个卷宗没问题。
restService.getOne("dossiers",this.parentId).then(
(dossier: any): void => {
this.dossier = dossier;
}
但是从那以后我想得到我的第二份档案。
我可以这样做:
restService.getOneUrl("offertes", this.dossier._links.offerte.href).then(
(offerte: any): void => {
this.parent = offerte;
console.log("offerte is ", this.parent);
}
);
这给了我
Object {id: 1, createdBy: "system", createdOn: "2016-05-17T14:24:43.384+0000", updatedBy: null, updatedOn: null…}
但我想做类似
this.dossier.getList("offerte").then(
(offerte: any):void =>{
console.log("offerte is ", offerte);
}
);
但是这个returns
[route: "offerte", reqParams: null, restangularized: true, fromServer: true, parentResource: Object…]
我应该如何调用此对象而不是 getList()?
我找到了解决问题的部分方法。
在我的 restangular 配置中,当我得到项目时,这是预定义的。
restangularProvider.addResponseInterceptor(function(data: any, operation: string, what: string,
url: string, response: any,
deferred: any): any {
let result: any = data;
if (operation === 'getList') {
if (data._embedded !== undefined) {
result = data._embedded[what];
} else {
result = [];
}
}
return result;
});
与 getOneUrl 相比,这使得我收到的数据格式不正确。
这样做是因为 restangular 总是希望将数组输入到 getList。
我可以通过编写一些满足 getList 要求的自定义包装器来解决这个问题,但是 easiest/fastest 解决方案是使用 customGET();
this.dossier.customGET("offerte").then(
(offerte: any):void =>{
console.log("offerte is ", offerte);
}
);
这个 returns 正确的提议对象。
在我的客户申请的#/dossiers/{id}/offertes
我需要从休息中获取我的档案 api/dossiers/{id}。
然后在那个档案上我需要得到相应的offerte api/dossiers/{id}/offerte
从那里我会得到我的 offerteRecords api/offertes/{id2}/records
我将包含我的 REST 数据 here
第一个卷宗没问题。
restService.getOne("dossiers",this.parentId).then(
(dossier: any): void => {
this.dossier = dossier;
}
但是从那以后我想得到我的第二份档案。 我可以这样做:
restService.getOneUrl("offertes", this.dossier._links.offerte.href).then(
(offerte: any): void => {
this.parent = offerte;
console.log("offerte is ", this.parent);
}
);
这给了我
Object {id: 1, createdBy: "system", createdOn: "2016-05-17T14:24:43.384+0000", updatedBy: null, updatedOn: null…}
但我想做类似
this.dossier.getList("offerte").then(
(offerte: any):void =>{
console.log("offerte is ", offerte);
}
);
但是这个returns
[route: "offerte", reqParams: null, restangularized: true, fromServer: true, parentResource: Object…]
我应该如何调用此对象而不是 getList()?
我找到了解决问题的部分方法。
在我的 restangular 配置中,当我得到项目时,这是预定义的。
restangularProvider.addResponseInterceptor(function(data: any, operation: string, what: string,
url: string, response: any,
deferred: any): any {
let result: any = data;
if (operation === 'getList') {
if (data._embedded !== undefined) {
result = data._embedded[what];
} else {
result = [];
}
}
return result;
});
与 getOneUrl 相比,这使得我收到的数据格式不正确。
这样做是因为 restangular 总是希望将数组输入到 getList。
我可以通过编写一些满足 getList 要求的自定义包装器来解决这个问题,但是 easiest/fastest 解决方案是使用 customGET();
this.dossier.customGET("offerte").then(
(offerte: any):void =>{
console.log("offerte is ", offerte);
}
);
这个 returns 正确的提议对象。