2016-04-04 3 views
2

Ich habe eine Datenstruktur ziemlich ähnlich der auf der Loopback HasManyThrough Dokumentation Seite beschrieben.Return-Join-Tabelle Attribute inklusiv mit Loopback

Für einen bestimmten Arzt (z. B. ID 2), würde ich gerne alle ihre Patienten mit einem Termin und deren Verabredung Datum bekommen.

Ich kann einen GET Betrieb wie folgt tun:

GET /physicians/2

mit dem filter Kopf { "include" : {"relation":"patients"} }

Und das tue ich den Arzt bekommen, und die Liste der Patienten, aber ich verliere die appointmentDate von die Beziehung.

Oder ich kann auf der Beziehungstabelle wie die Dokumentation einen GET Betrieb tun zeigt:

GET /appointments

mit dem filter Kopf { "include" : {"relation":"patient"}, "where":{"physicianId":2}} }

Und ich die Termine zu bekommen, mit dem Datum und der Patient eingebettet, aber nicht die Details des Arztes.

Ich kann nicht in der Lage sein, die beiden zu kombinieren.

Gibt es eine Möglichkeit, die gesamten Daten mit einer Abfrage zu erhalten?

Die Daten würden so etwas wie dieses:

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

One Weg Hack, den ich gefunden wird zweimal die Beziehung zu definieren. Einmal als HasManyThrough und einmal als ein HasMany an den Tisch Termine, dann kann ich etwas tun:

GET /physicians/2

mit dem filter Kopf { "include" : {"relation":"appointments","scope":{"include":["patient"]} } }

Aber das scheint nicht richtig, oder könnte führt vielleicht zu seltsamen Verhaltensweisen mit der duplizierten Beziehung ... aber vielleicht bin ich paranoid.

Antwort

1

Sie könnten beide Modelle sind

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

Sie erhalten eine ganze Reihe von doppelten Daten obwohl (Details Arzt mit id 2). Ich glaube, dass HasManyThrough Relation-Modell ursprünglich keine zusätzlichen Daten enthalten sollte und daher einige Einschränkungen hat. Here ist ein verwandtes GitHub-Problem.

+0

Dank Ivan, das bestätigt die Dinge. Ich hatte dieses GitHub-Problem nicht gefunden, und die damit verbundene SO-Frage, beide gut liest. – Ben