2016-04-01 10 views
0

Backend nodejs hizmetimizde js-data-sqlDSSqlAdapter kullanıyoruz. Bizim modeli tanımı vardır olarak tanımlanan bir hasOne İlişki izler:,js-data-sql DSSqlAdapter hasOne İlişkiler için sol birleştirme oluştur

knex hata ayıklama etkinleştirdikten sonra biz anladım

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

Soru öyle:

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

Biz kullanarak adaptör diyoruz left join ifadesini kullanmaz, ancak aşağıdaki gibi bir SQL sorgusu kullanmaz:

Bunun yerine left join oluşturmak için herhangi bir fikri olan js-data-sqlDSSqlAdapter oluşturuyor mu? Gibi:

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

cevap

1

Ben js-data-sql ait maintainers'ı biriyim. Bu, with aracılığıyla yüklenen tüm ilişkilerin, istenen her bir ilişki için sonraki select ... where "id" in (...)'u gerçekleştiren loadingWithRelations kullanılarak yapıldığı için desteklenmemektedir. Orijinal sorgusunun bir parçası olarak

Yükleme hasOne ve belongsTo kesinlikle bir left outer join aracılığıyla mümkün olmalıdır, ancak orijinal varlığın yükleme gibi bir inner join bir ilişki (ler) varlığına bağlı değildir değil.

ben de görüşleriniz için js-data 3.0

+0

teşekkür için js-data-adapter uzatmak için üzerine noktasına ihtiyacı js-data-sql olarak bunu yapmak mümkün olacak zaman emin değilim ancak bu değişikliği izlemek için bir github issue oluşturduk . Soruyu sol birleşimler oluşturmak için güncelledim ve github sorununuzu destekledim. –