2016-04-01 9 views
0

Wir verwenden js-data-sqlDSSqlAdapter in unserem Backend-Dienst nodejs. Unser Modell Definition hat eine hasOne Beziehung wie folgt definiert:js-data-sql DSSqlAdapter Linke Verknüpfung für hasOne-Beziehungen erstellen

module.exports = { 
    name: 'covariance_predictions', 
    idAttribute: 'id', 
    relations: { 
     belongsTo: { 
     assets: { 
      localKey: 'asset_1_id', 
      localField: 'Covariance_Predictions' 
     } 
     }, 
     hasOne: { 
     currencies: { 
      localField: 'currency', 
      localKey: 'currency_id' 
     } 
     } 
    } 
    }; 

Wir haben den Adapter rufen mit:

covariancePredictions.findAll(params, { 
    with: ['currencies'] 
}) 

Frage

Nach dem Aktivieren knex Debuggen wir herausgefunden, dass es verwendet keine left join-Anweisung, sondern eine nachfolgende SQL-Abfrage wie:

sql: 'select "currencies".* from "currencies" where "id" in (?, ?, ?, ?, ?, ?, ?)' } 

Hat jemand eine Idee, wie man js-data-sqlDSSqlAdapter eine left join stattdessen bauen? Wie:

select "covariance_predictions".id, [...], "currencies".code from "covariance_predictions" left join "currencies" on "currencies".id = "covariance_predictions".currency_id; 

Antwort

1

Ich bin einer der Betreuer von js-data-sql. Dies wird derzeit nicht unterstützt, da alle über with geladenen Relationen unter Verwendung von loadingWithRelations ausgeführt werden, der die nachfolgenden select ... where "id" in (...) für jede angeforderte Relation ausführt.

Laden hasOne und belongsTo als Teil der ursprünglichen Abfrage sollten auf jeden Fall möglich sein, über ein left outer join, aber keine inner join wie das Laden der ursprünglichen Einheit ist nicht abhängig von der Existenz einer Beziehung (en).

Ich habe ein github issue geschaffen, diese Änderung zu verfolgen, obwohl ich nicht sicher bin, wenn ich in der Lage sein werde, es zu machen, wie js-data-sql muss auch in dem Hafen über js-data-adapter für js-data 3.0

+0

Dank für Ihr Feedback zu verlängern . Ich habe die Frage aktualisiert, um Links-Joins zu generieren, und Ihr GitHub-Problem unterstützt. –

Verwandte Themen