为API API和导航属性生成Breeze URL

时间:2015-02-10 20:21:51

标签: breeze

我一直在尝试使用breeze与第三方RESTful API - API需要两种类型的参数 - 像单个实体的深度链接 - 如localhost / request / 5(即id = 5的请求)和使用JSON编码的参数化查询在URL中(由微风转换而没有问题)。

主要问题是使用URL轻松创建请求,例如: 本地主机/请求/ {ID}

不是JSON编码GET,而是使用breeze查询" withParameters({workorderid:id})"

问题的第二部分是使用如下语法:

 var query = breeze.EntityQuery
   .from('request')
   .withParameters(parameters)
   .expand('requestDetails');

查询两个实体 - 主要 - 请求 - 和次要 - 请求详细信息(在访问时查询次要对象的值)。

结果应该与此图像相似:

http://postimg.org/image/prurk75ol/

我的模型是用两个实体手工定义的:



metadataStore.addEntityType({
  shortName: "request",
  namespace: "servicedesk",
  dataProperties: {
    workorderid: {
      dataType: DT.Identity,
      isPartOfKey: true
    },
    ignorerequest: {
      dataType: DT.Boolean
    }
  },
  navigationProperties: {
    requestDetails: {
      entityTypeName: "requestDetails:#servicedesk",
      isScalar: true,
      associationName: "request_requestDetails",
      foreignKeyNames: ["workorderid"]
    }
  }
});

metadataStore.addEntityType({
      shortName: "requestDetails",
      namespace: "servicedesk",
      dataProperties: {
        workorderid: {
          dataType: DT.Identity,
          isPartOfKey: true
        },
        group: {
          dataType: DT.String
        },
        description: {
          dataType: DT.String
        }
      },
      navigationProperties: {
        request: {
          entityTypeName: "request:#servicedesk",
          isScalar: true,
          associationName: "requestDetails_request",
          foreignKeyNames: ["workorderid"]
        }
      }




我找到了这样的例子:https://github.com/Breeze/breeze.js.labs/blob/master/breeze.ajaxrestinterceptor.js,看起来我可以通过拦截ajax调用来改变url生成,这可以用于angular.breeze适配器吗?

1 个答案:

答案 0 :(得分:0)

我不完全理解你的问题。您遇到什么问题?请编辑您的答案,以便我们提供帮助。

但我确实看到了元数据问题的内容以及request类型requestDetails导航属性的定义。属性名称和语义都表明应该返回一个集合,但是您已将其定义为标量。

requestDetails: {
  entityTypeName: "requestDetails:#servicedesk",
  isScalar: true, // <-- HUH?
  associationName: "request_requestDetails",
  foreignKeyNames: ["workorderid"]
}

我想你想要isScalar: false,