REST API 和导航属性的 Breeze URL 生成

Breeze URL generation for REST API and navigation properties

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

主要问题是轻而易举地用 URL 创建请求,例如: localhost/request/{id}

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

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

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

查询两个实体 - 主要 - 请求 - 和次要 - 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 适配器完成吗?

我不太明白你的问题。您遇到什么问题?请编辑您的答案,以便我们提供帮助。

但我确实看到 元数据问题 与您对 request 类型的 requestDetails 导航 属性 的定义有关。 属性 名称和语义都表明此 应该 return 一个集合 但您已将其定义为标量。

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

我想你想要isScalar: false,