2017-08-19 5 views
1

Ich verwende BookshelfJS als mein ORM. Ich habe 3 Modelle.BookshelfJS Beziehung - hasMany

TripHistory 
user_id 
route_id 

Route 
id 
name 

Users 
id 
name 

Von meinem Benutzermodell, ich habe eine Beziehung

trips() { 
    return this.hasMay(TripHistory) 
} 

Und die TripHistory hat eine Beziehung wie

route() { 
    return this.belongsTo(Route) 
} 

Das Problem hier ist, wenn ich versuche, die Reise Geschichte zu bekommen Ich möchte nur den Namen der Route erhalten. Laufen

withRelated: ['trips.route'] 

kehrt

"trips": [ 
     { 
      "id": 1, 
      "user_id": 1, 
      "route_id": 1, 
      "driver_id": 1, 
      "trip_id": 1, 
      "created_at": "2017-08-09T16:46:34.000Z", 
      "updated_at": "2017-08-09T16:46:34.000Z", 
      "route": { 
       "id": 1, 
       "pickup": "Fadeyi", 
       "destination": "Jibowu", 
       "departure_time": "6:00", 
       "time_of_day": "AM", 
       "day_of_week": "MON", 
       "fair": 500, 
       "created_at": "2017-08-09T16:21:58.000Z", 
       "updated_at": "2017-08-09T16:21:58.000Z", 
       "pickup_coordinate": "6.528482899999999, 3.3628242", 
       "destination_coordinate": "6.5177977, 3.3678641" 
      } 
     }, 

Aber ich will wirklich nur die Route Objekt

"trips": [ 
     { 

       "id": 1, 
       "pickup": "Fadeyi", 
       "destination": "Jibowu", 
       "departure_time": "6:00", 
       "time_of_day": "AM", 
       "day_of_week": "MON", 
       "fair": 500, 
       "created_at": "2017-08-09T16:21:58.000Z", 
       "updated_at": "2017-08-09T16:21:58.000Z", 
       "pickup_coordinate": "6.528482899999999, 3.3628242", 
       "destination_coordinate": "6.5177977, 3.3678641" 

     }, 

Jede Idee lieben, wie ich das aus dem Modell beheben?

Vielen Dank.

Antwort

3

Ich löste meine eigenes Problem. Hier ist die richtige Lösung

trips() { 
    return this.hasMany('Route') 
    .through('TripHistory', 'id', 'user_id', 'route_id'); 
} 

Ich hoffe, das hilft jemand da draußen.

0

Sie eine Funktion zum TripHistory Modell mit Definition wie unten hinzufügen ...

fetchWithOnlyRouteRelationship: async function() { 

     const result = await this.fetchAll(withRelated: ['trips.route']); 
     return result['route']; 
}, 

dann, um es wie so in Ihrem Service/Controller beziehen ..

new TripHistory({id : bar }).fetchWithOnlyRouteRelationship(); 
+0

Leider würde dies nicht funktionieren. –

+0

waren da irgendwelche Fehler? –

+0

Ja, bitte '' 'TypeError: Eigenschaft kann nicht gelesen werden 'dann' von undefined'''. Haben Sie Ihre Lösungen für ein Projekt oder etwas ausprobiert? –

Verwandte Themen