使用breezejs和WEBAPI,我提取产品列表,每个产品都有一个组件列表。
var list = function (productsObservable) { var query = EntityQuery.from('Products') .expand('components') return manager.executeQuery(query) .then(querySucceeded) .fail(datacontext.queryFailed); function querySucceeded(data) { // process results } } function querySucceeded(data) { productsObservable(data.results); } var productsObservable= ko.observableArray([]);
原始结果显示了列表中第一个产品的3个组件的列表,而当我导航data.results [0] .component()时,我只得到数组中的一个组件。
当我浏览/ breeze / Breeze / products时,我看到了每个产品的所有组件。
我什么都错过了?这是我直接调用/ breeze / Breeze / products时得到的响应。
{
$id: "1",
$type: "DD.Product, DD_Model",
Id: 1,
Name: "XXXX",
Components: [
{
$id: "2",
$type: "DD.Component, DD_Model",
Id: 1,
Name: "component1"
Product: {
$ref: "1"
},
},
{
$id: "3",
$type: "DD.Component, DD_Model",
Id: 2,
Name: "component2"
Product: {
$ref: "1"
},
},
{
$id: "4",
$type: "DD.Component, DD_Model",
Id: 11,
Name: "component3"
Product: {
$ref: "1"
},
}
],
},
通过/ breeze / Breeze / metadata
从服务器检索对象元数据答案 0 :(得分:0)
在我看来,您正在使用两种不同的数据类型并将它们放入组件数组中。
我有一种感觉,当你获得JSON后,它具有这些附加属性,但它们不会映射到DD.Components,因为它们的类型为GCDMS.Models.CalibrationEquipment,GCDMS_Model。
修改强>
出于所有意图和目的,你所做的事情看起来是正确的,前提是你所展示的内容与返回的数据相符......等等。
我唯一可以建议的是,在返回结果之后,将它放在一个方法中并调用它 - console.log(entityManager.getEntities());并查看是否有3个组件并确保它们已正确映射回来。