Return join table attributes in incluce with loopback

六眼飞鱼酱① 提交于 2020-01-02 09:43:39

问题


I've got a data structure fairly similar to the one described on the Loopback HasManyThrough documentation page.

For a given Physician (e.g. id 2), I would like to get all their patients with an appointment AND their appointment date.

I can do a GET operation like this:

GET /physicians/2

with the filter header { "include" : {"relation":"patients"} }

And I do get the physician, and the list of patients, but I lose the appointmentDate of the relation.

Or, I can do a GET operation on the relation table like the documentation shows:

GET /appointments

with the filter header { "include" : {"relation":"patient"}, "where":{"physicianId":2}} }

And I get the the appointments, with the date and the patient embedded, but not the physician details.

I can't seem to be able to combine the two.

Is there a way to get the whole data with one query?

The data would be something like this:

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

One way hack I found is to define the relation twice. Once as a HasManyThrough and once as a HasMany to the appointments table, then I can do something like this:

GET /physicians/2

with the filter header { "include" : {"relation":"appointments","scope":{"include":["patient"]} } }

But that doesn't seem right, or could maybe lead to odd behaviours with the duplicated relation.. but maybe I'm paranoid.


回答1:


You could include both models

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

You will get quite a lot of duplicate data though (details of physician with id 2). I believe, that HasManyThrough relation model was initially not supposed to carry any extra data and therefore, it has some limitations. Here is a related github issue.



来源:https://stackoverflow.com/questions/36394736/return-join-table-attributes-in-incluce-with-loopback

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!