我正在尝试将Breeze与AngularJS和Web API后端一起使用,它以下列格式返回数据:
{
Count: 123,
Items: [
{
CustomerID: 1,
FirstName: "John",
Surname: "Smith",
// etc..
},
{
CustomerID: 2,
FirstName: "Bill",
Surname: "Jones",
// etc..
},
{
// 23 more Customer records...
}
],
NextPageLink: "http://localhost/web/api/customers?$skip=25"
}
我已按照Breeze.js网站http://www.breezejs.com/documentation/metadata-hand-depth上的示例在metaDataStore中手动设置Customer
实体:
function addCustomer() {
addType({
shortName: "Customer",
defaultResourceName: "customers",
dataProperties: {
CustomerID: { type: ID, isPartOfKey: true },
FirstName: { max: 50 },
Surname: { max: 50 },
// a bunch more properties
}
});
}
我查询“客户”端点的代码如下所示:
function getCustomers(){
var customers = manager.getEntities('Customer');
return breeze.EntityQuery.from('customers')
.using(manager).execute()
.then(function(data){
return data.results; // breakpoint here is reached
});
}
查询成功执行,就像我在指定的位置放置一个断点时,data
对象在那里,但data.results
属性是一个包含看起来像单个Customer
实体的数组的数组是空的。见截图:
我怀疑这是因为后端将集合作为包装器对象的Items
属性返回。
我的问题是:假设我无法更改后端API的响应,如何告诉Breeze Customer
实体实际包含在{{1属性?
答案 0 :(得分:1)
您可以构建自己的自定义JsonResultsAdapter
来执行此操作。
有关详细信息,请参阅http://www.breezejs.com/documentation/mapping-json。
我们还有一个sample,可以显示第三方后端的自定义适配器。
希望这有帮助。