2015-06-19 23 views
2

我试图通过创建belongsTo关系来设置Loopback中的基本模型关系。在belongsTo关系中获取完整的json结构

我有两个型号定义如下:

Contract.json

{ 
    "name": "Contract", 
    "base": "PersistedModel", 
    "idInjection": false, 
    "options": { 
    "validateUpsert": true 
    }, 
    "mssql": { 
    "schema": "dbo", 
    "table": "Contract" 
    }, 
    "properties": { 
    "contractid": { 
     // some property stuff 
    }, 
    "validations": [], 
    "relations": { 
    "employee": { 
     "type": "belongsTo", 
     "model": "Employee", 
     "foreignKey": "" 
    } 
    }, 
    "acls": [], 
    "methods": [] 
} 

Employee.json

{ 
    "name": "Employee", 
    "base": "PersistedModel", 
    "idInjection": false, 
    "options": { 
    "validateUpsert": true 
    }, 
    "mssql": { 
    "schema": "dbo", 
    "table": "Employee" 
    }, 
    "properties": { 
    "employeeid": { 
     // some property definitions... 
    } 
    }, 
    "validations": [], 
    "relations": { 
    "contracts": { 
     "type": "hasMany", 
     "model": "Contract", 
     "foreignKey": "" 
    } 
    }, 
    "acls": [], 
    "methods": [] 
} 

当我做一个Contract一个GET请求,以此specfic id我得到结果:

调用:/api/Contracts/55

{ 
    "contractid": 55, 
    "employeeId": 83 
} 

目前为止还不错。但是,当我做了GET要求上Contract,也得到Employee的I希望得到像这样的输出继电器:

呼叫:/api/Contracts/55/employee

{ 
    "contractid": 55, 
    "employee": { 
     "employeeid": 83 
    } 
} 

但是,相反,我只得到没有Employee对象的Contract

{ 
    "employeeid": 83 
} 

这是为什么?

我做错了什么?还是我有错误的期望?

回答

2

你可以做/api/Contracts/55?filter[include]=employee

或:

/api/Contracts/55?filter={"include":"employee"} 

您可以设置合同模式默认范围加入了 “范围” 部分包括员工的对象:

"scope": { 
    "include": "employee" 
    } 
+0

酷,那他没有把戏!但现在我想知道,这是你应该怎么做的?换句话说,调用'/ api/Contracts/55/employee'应该只是返回一个'employee'对象? – Vivendi

+0

您可以使用默认范围进行此默认行为(添加到答案)。在很多情况下,由于可能需要额外的带宽和数据库调用,您不想返回整个图表。 – conradj