【问题标题】:Return join table attributes in incluce with loopback返回包含环回的连接表属性
【发布时间】:2016-04-04 15:16:49
【问题描述】:

我的数据结构与 Loopback HasManyThrough 文档页面中描述的非常相似。

对于给定的医师(例如 id 2),我想为他们的所有患者提供预约和预约日期。

我可以像这样进行GET 操作:

GET /physicians/2

带有filter 标头{ "include" : {"relation":"patients"} }

我确实得到了医生和患者名单,但我失去了关系的appointmentDate

或者,我可以像文档显示的那样对关系表执行GET 操作:

GET /appointments

带有filter 标头{ "include" : {"relation":"patient"}, "where":{"physicianId":2}} }

我得到了预约,其中包含日期和患者,但没有医生的详细信息。

我似乎无法将两者结合起来。

有没有办法通过一次查询获取全部数据?

数据会是这样的:

[
    "name" : "Dr John",
    "appointments" : [ {
        "appointmentDate": "2014-06-01",
        "patient": {
          "name": "Jane Smith",
          "id": 1
        }
    }]
]

我发现的一个 way hack 是定义关系两次。一次作为HasManyThrough 和一次作为HasMany 到约会表,然后我可以这样做:

GET /physicians/2

带有filter 标头{ "include" : {"relation":"appointments","scope":{"include":["patient"]} } }

但这似乎不对,或者可能导致重复关系的奇怪行为..但也许我是偏执狂。

【问题讨论】:

    标签: loopbackjs


    【解决方案1】:

    你可以同时包含两个模型

    GET /appointments
    { "include": ["patient", "physician"], "where": { "physicianId":2 } }
    

    你会得到相当多的重复数据(id 为 2 的医生的详细信息)。我相信,HasManyThrough 关系模型最初不应该携带任何额外的数据,因此它有一些限制。 Here 是一个相关的 github 问题。

    【讨论】:

    • 谢谢伊万,这证实了事情。我没有找到那个 github 问题和相关的 SO 问题,都很好读。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 1970-01-01
    相关资源
    最近更新 更多